我花了很多时间来解决这个问题。 下面是我的phantomjs代码
var page = require('webpage').create()
page.open("https://www.google.com.hk/",function(status){
if(status === 'success'){
var aa = page.evaluate(function() {
return document.getElementsByClassName('ctr-p').length
})
console.log(aa)
}
phantom.exit(0)
})
正如您所看到的,在evaluate函数返回值document.getElementsByClassName(' ctr-p')。长度,当我将其复制到将打印的Chrome Inspect控制台' 3&#39 ;,如下图所示: 但是当我执行phantomjs代码时,结果是' 0'!
这有什么不对?请〜
答案 0 :(得分:3)
Google认为PhantomJS'默认的useragent并认为它是某种过时的移动浏览器:
添加现代用户将解决问题。另请参阅以下代码示例以获取其他建议:
var page = require('webpage').create()
// Let's pretend we're Chrome 51
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36';
page.open("https://www.google.com.hk/",function(status){
if(status === 'success'){
var aa = page.evaluate(function() {
return document.getElementsByClassName('ctr-p').length
})
console.log(aa)
// Make screenshots often to confirm
// everything is what you're thinking it is
page.render("googlehk.jpg");
phantom.exit() // 0 = success exit code
}
else {
phantom.exit(1); // 1 = error exit code
}
})
3
答案 1 :(得分:0)
所以我为phantomjs的初学者提供一些建议。如果你想通过网站上的phantomjs获取元素。你必须检查你的网站是否被访问登录。 大多数网站将根据您的浏览器cookie登录默认值。但是使用phantomjs,它就不会发生。原因是你没有设置cookie。这就是为什么我的问题来到这里。