Я хотел бы знать, как анализировать JSON в phantomjs. Любое содержимое страницы заключено в HTML (<html><body><pre>{JSON string}</pre></body></html>). Есть ли варианты для удаления тегов или запроса другого типа контента как «application / json»? Если нет, то как лучше всего это разобрать. Использует ли он jQuery после включения в includeJS jQuery?
<html><body><pre>{JSON string}</pre></body></html>
Поскольку вы используете 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(); });
Если данные json содержат строки html, они будут удалены в предложенном атрибуте page.plainText.
page.plainText
Как и в принятом ответе, я бы предложил использовать JSON.parse() для преобразования строки JSON в объект.
JSON.parse()
Например, ваш код может выглядеть следующим образом:
var jsonObject = page.evaluate(function() { return JSON.parse(page.plainText); });
Вот что я сделал:
var obj = page.evaluate(function() { return eval('(' + document.body.innerText + ')'); }
Тогда объект, который вы получили - это объект JSON, возвращенный с этой страницы.