PhantomJS'点击'事件在链接上工作,但不是按钮?

时间:2016-08-30 07:02:52

标签: web-scraping phantomjs nodes

我正在使用PhantomJS抓取动态内容。我想加载此网站:https://www.instagram.com/explore/tags/fun/,然后点击屏幕底部的按钮"加载更多"加载更多图片,并保存HAR内容。此代码有效:

            var page require('webpage').create();

            page.open('http://www.milliondollarhomepage.com', function(status) {

            setTimeout(function(){
            page.sendEvent('click', 240, 210, button='left') }, 200);

            setTimeout(function(){
            page.render("screensho1.png");
                    phantom.exit();
                }, 5000);

            });

点击屏幕上的--link--。但是当我使用我感兴趣的URL时,https://www.instagram.com/explore/tags/fun/使用正确坐标的相同代码将不会单击---按钮---。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

元素的定位通常是相对的,所以我建议避免绝对点击事件;而是使用选择器并在元素上触发click事件:

var page = require('webpage').create();
var fs = require('fs');
var system = require('system');

var url = "https://www.instagram.com/explore/tags/fun/";

page.open(url, function(status) {
    console.log("Status: " + status);
    if(status === "success") {

    setTimeout(
        function(){
            page.evaluate(
                function(){document.querySelector("#react-root > section > main > article > div > div > a").click();}
            );
        }, 200);

    setTimeout(
        function(){
            path = 'hardcoded.png';
            page.render(path, {format: 'png', quality: '100'});
            phantom.exit();
        }, 1000);

    }else{
        phantom.exit();
    }
});