我想知道如何在phantomjs中解析JSON。任何页面内容都包含在html(<html><body><pre>{JSON string}</pre></body></html>
)中。是否有选项可以删除封闭标签或要求不同的Content-Type为“application / json”?如果没有,解析它的最佳方法是什么。是否在使用includeJS jQuery后使用jQuery?
答案 0 :(得分:36)
由于您使用的是由webkit浏览器构建的PhantomJS,因此您可以访问本机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();
});
答案 1 :(得分:0)
这是我做的:
var obj = page.evaluate(function() {
return eval('(' + document.body.innerText + ')');
}
然后你得到的obj是从该页面返回的JSON对象。
答案 2 :(得分:-1)
正如已接受的答案中所述,我建议使用JSON.parse()
将JSON字符串转换为对象。
例如,您的代码可能如下所示:
var jsonObject = page.evaluate(function() {
return JSON.parse(page.plainText);
});
答案 3 :(得分:-1)
如果json数据包含html字符串,则会在建议的page.plainText
属性中删除它们。