Подтвердить что ты не робот

Получите содержимое страницы JSON с помощью PhantomJS

Я хотел бы знать, как разбирать JSON в phantomjs. Любое содержимое страницы заключено в html (<html><body><pre>{JSON string}</pre></body></html>). Есть ли варианты для удаления закрывающих тегов или запроса другого Content-Type как "application/json"? Если нет, то лучший способ разобрать. Является ли использование jQuery после включения с includeJS jQuery?

4b9b3361

Ответ 1

Поскольку вы используете PhantomJS, который построен из браузера webkit, у вас есть доступ к собственной библиотеке JSON. Нет необходимости использовать page.evaluate, вы можете просто использовать свойство plainText для объекта страницы.

http://phantomjs.org/api/webpage/property/plain-text.html

var page = require('webpage').create();
page.open('http://somejsonpage.com', function () {
    var jsonSource = page.plainText;
    var resultObject = JSON.parse(jsonSource);
    phantom.exit();
});

Ответ 2

Вот что я сделал:

var obj = page.evaluate(function() {
    return eval('(' + document.body.innerText + ')');
}

Тогда вы получите объект JSON, возвращенный с этой страницы.

Ответ 3

Как уже в принятом ответе, я бы предложил использовать JSON.parse() для преобразования строки JSON в объект.

Например, ваш код может выглядеть так:

var jsonObject = page.evaluate(function() {
  return JSON.parse(page.plainText);
});

Ответ 4

Если json-данные содержат html-строки, они будут удалены в пределах предлагаемого атрибута page.plainText.