我正在测试PhantomJS并试图返回angel.co上列出的所有初创公司.我决定使用PhantomJS,因为我需要通过单击底部的"Next"来分页.现在这段代码不会返回任何结果.我是PhantomJS的新手,并已阅读所有代码示例,因此我们非常感谢任何指导.
var page = require('webpage').create();
page.open('https://angel.co/startups', function(status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
page.evaluate(function() {
var list = document.querySelectorAll('div.resume');
for (var i = 0; i < list.length; i++){
console.log((i + 1) + ":" + list[i].innerText);
}
});
}
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
Cha*_*rsh 17
默认情况下,页面上评估的控制台消息不会出现在PhantomJS控制台中.
当您执行代码时page.evaluate(...),该代码正在页面的上下文中执行.所以,当你拥有时console.log((i + 1) + ":" + list[i].innerText);,它将被记录在无头浏览器本身,而不是在PhantomJS中.
如果您希望将所有控制台消息传递给PhantomJS本身,请在打开页面后使用以下内容:
page.onConsoleMessage = function (msg) { console.log(msg); };
Run Code Online (Sandbox Code Playgroud)
page.onConsoleMessage每当您从页面内打印到控制台时都会触发.通过此回调,您要求PhantomJS将消息回显到其自己的标准输出流.
作为参考,您的最终代码看起来像(这为我成功打印):
var page = require('webpage').create();
page.open('https://angel.co/startups', function(status) {
page.onConsoleMessage = function (msg) { console.log(msg); };
if (status !== 'success') {
console.log('Unable to access network');
} else {
page.evaluate(function() {
var list = document.querySelectorAll('div.resume');
for (var i = 0; i < list.length; i++){
console.log((i + 1) + ":" + list[i].innerText);
}
});
}
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2276 次 |
| 最近记录: |