Получить содержимое страницы JSON с PhantomJS - PullRequest
20 голосов
/ 16 января 2012

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

Ответы [ 4 ]

36 голосов
/ 03 января 2013

Поскольку вы используете 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();
});
0 голосов
/ 09 октября 2016

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

0 голосов
/ 27 января 2012

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

Например, ваш код может выглядеть следующим образом:

var jsonObject = page.evaluate(function() {
  return JSON.parse(page.plainText);
});
0 голосов
/ 18 января 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...