【发布时间】:2016-04-07 04:29:30
【问题描述】:
我正在尝试解析路由器的状态页面以获取 wlan 设备的数量。该页面使用一些 JavaScript 来获取状态,所以我尝试使用 PhantomJS,但没有成功。
这是状态页面的html源(status.html和status.js):http://pastebin.com/dmvptBqv
我的浏览器的开发者工具在控制台上显示这个输出(匿名):
([ {"vartype":"value","varid":"device_name","varvalue":"Speedport W 921V"}, {"vartype":"value","varid":"factorydefault","varvalue":"1"}, {"vartype":"value","varid":"rebooting","varvalue":"0"}, {"vartype":"value","varid":"router_state","varvalue":"OK"}, {"vartype":"value","varid":"bngscrat","varvalue":"0"}, {"vartype":"value","varid":"acsreach","varvalue":"0"},我怎样才能从 PhantomJS 中得到这个评估的输出?也许它很简单,我只是错过了文档中的部分。
我认为我必须使用评估函数,但不知道文档对象返回完整评估的正确函数是什么。
var webPage = require('webpage');
var page = webPage.create();
page.open('blubb', function (status) {
var js= page.evaluate(function() {
return document.???;
});
console.log(js);
phantom.exit();
});
【问题讨论】:
-
您是否尝试注册到
page.onConsoleMessage? -
您好,我尝试了
page.onConsoleMessage = function(msg) { console.log('CONSOLE: ' + msg); };,控制台日志为document.body.innerHTML;,但没有成功。 -
如果您说开发人员工具已经在控制台中显示了某些内容,那是没有意义的。
page.open(url, function (status) { console.log("test"); phantom.exit(); });是否打印任何内容?如果是这样,page.open(url, function (status) { console.log(page.content); phantom.exit(); });呢? -
嗨,第一个给我
$ ./phantomjs test.js > test。后者打印了html源码,但是javscript没有被执行,看这里:link -
a)
status说什么? b)您使用哪个 PhantomJS 版本? c) 请注册onConsoleMessage、onError、onResourceError、onResourceTimeout活动 (Example)。也许有错误。 d) 在打印页面源/渲染屏幕截图之前,您是否尝试过稍等片刻?
标签: javascript phantomjs