使用PhantomJS获取JSON页面内容

时间:2012-01-16 10:43:25

标签: json phantomjs

我想知道如何在phantomjs中解析JSON。任何页面内容都包含在html(<html><body><pre>{JSON string}</pre></body></html>)中。是否有选项可以删除封闭标签或要求不同的Content-Type为“application / json”?如果没有,解析它的最佳方法是什么。是否在使用includeJS jQuery后使用jQuery?

4 个答案:

答案 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属性中删除它们。