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