我想知道如何在 phantomjs 中解析 JSON。任何页面内容都包含在 html ( <html><body><pre>{JSON string}</pre></body></html>
) 中。是否有删除封闭标签或要求不同的 Content-Type 作为“application/json”的选项?如果不是,那么解析它的最佳方法是什么。包含 includeJS jQuery 后是否使用 jQuery?
问问题
19319 次
4 回答
36
由于您使用的是由 webkit 浏览器构建的 PhantomJS,因此您可以访问本机 JSON 库。无需使用 page.evaluate,您只需使用 page 对象上的 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();
});
于 2013-01-03T19:44:35.540 回答
0
这是我所做的:
var obj = page.evaluate(function() {
return eval('(' + document.body.innerText + ')');
}
那么你得到的 obj 就是从那个页面返回的 JSON 对象。
于 2012-01-18T08:53:39.580 回答
-1
正如已经在接受的答案中一样,我建议使用JSON.parse()
将 JSON 字符串转换为对象。
例如,您的代码可能如下所示:
var jsonObject = page.evaluate(function() {
return JSON.parse(page.plainText);
});
于 2012-01-27T17:40:27.667 回答
-1
如果 json 数据包含 html 字符串,它们将在建议的page.plainText
属性中被删除。
于 2016-10-09T12:53:47.953 回答