Javascript 计算can';中的phantomjs getElementsByClass();得不到元素

Javascript 计算can';中的phantomjs getElementsByClass();得不到元素,javascript,phantomjs,Javascript,Phantomjs,我花了很多时间来解决这个问题。 下面是我的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.getEleme

我花了很多时间来解决这个问题。 下面是我的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函数返回值文档.getElementsByCassName('ctr-p')。将其复制到Chrome Inspect控制台时的长度,该控制台将打印“3”,如下图所示: 但是当我执行phantomjs代码时,结果是“0”!


怎么了?请~

谷歌看到PhantomJS的默认用户代理,认为它是某种过时的移动浏览器:

添加一个现代用户代理将解决这个问题。有关其他建议,请参见以下代码示例:

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
    }


})
三,


谷歌看到PhantomJS的默认用户代理,认为它是某种过时的移动浏览器:

添加一个现代用户代理将解决这个问题。有关其他建议,请参见以下代码示例:

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
    }


})
三,


所以我给幻影的初学者一些建议。若你们想通过网站上的phantomjs获取元素。您必须检查您的网站是否可以登录。
大多数网站将根据您的浏览器cookie默认登录。但使用phantomjs时,情况并非如此。原因是你没有设置cookie。这就是为什么我的问题会出现在这里。

所以我给幻影初学者一些建议。若你们想通过网站上的phantomjs获取元素。您必须检查您的网站是否可以登录。
大多数网站将根据您的浏览器cookie默认登录。但使用phantomjs时,情况并非如此。原因是你没有设置cookie。这就是为什么我的问题会出现在这里。

很抱歉延迟回复。我在我的Mac上复制了你的所有代码,但它也打印了0,如上所示。page.settings.userAgent='Mozilla/5.0(windowsnt 6.1;WOW64)AppleWebKit/537.36(KHTML,比如Gecko)Chrome/51.0.2704.106 Safari/537.36'唯一的优点是它不会显示一些恼人的提示,比如:in support等。谢谢。你的PhantomJS版本是什么?可能是旧的。我已发现问题并回答了我的问题。谢谢。很抱歉延迟答复。我在我的Mac上复制了你的所有代码,但它也打印了0,如上所示。page.settings.userAgent='Mozilla/5.0(windowsnt 6.1;WOW64)AppleWebKit/537.36(KHTML,比如Gecko)Chrome/51.0.2704.106 Safari/537.36'唯一的优点是它不会显示一些恼人的提示,比如:in support等。谢谢。你的PhantomJS版本是什么?可能是旧的。我发现了问题并回答了我的问题。谢谢。