20

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

4

4 回答 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 回答