Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Casperjs抓取动态内容_Javascript_Web Scraping_Casperjs_Dynamic Content - Fatal编程技术网

Javascript Casperjs抓取动态内容

Javascript Casperjs抓取动态内容,javascript,web-scraping,casperjs,dynamic-content,Javascript,Web Scraping,Casperjs,Dynamic Content,我正试图用Casperjs来解决这个问题。我的代码的主要功能工作正常,但是内容是动态加载的,我不知道如何触发它 这就是我现在正在做的: casper.waitFor(function() { this.scrollToBottom(); var count = this.evaluate(function() { var match = document.querySelectorAll('.loading-msg'); return matc

我正试图用Casperjs来解决这个问题。我的代码的主要功能工作正常,但是内容是动态加载的,我不知道如何触发它

这就是我现在正在做的:

casper.waitFor(function() {

    this.scrollToBottom();

    var count = this.evaluate(function() {
        var match = document.querySelectorAll('.loading-msg');
        return match.length;
    });

    if (count <= 1) {
        return true;
    }
    else {
        return false
    };

}, function() { // do stuff });
但我想不出来,我甚至不确定它在这里是否相关。
有什么想法吗?

我已经看了这一页。它有这样一个behvior,当你跳到末尾时,它不会加载中间的图像

加载页面时,前几行已完全加载,还有一些行未完全加载(图像缺失由
'.loading msg'
元素表示)。当您使用
this.scrollToBottom()跳到末尾时没有连续滚动。它跳到了末尾,页面JavaScript没有检测到中间的图像在视口中,尽管时间很短。页面继续加载下一行,但不加载跳过行的丢失图像

您必须缩短两个代码段中的跳转距离

第一个可以这样更改:

var pos = 0, 
    height = casper.page.viewportSize.height;
casper.waitFor(function() {
    this.scrollTo(0, pos * height);
    return !this.exists('.loading-msg');
}, function() { // do stuff }, 20000);
第二种可能是通过改变

this.page.scrollPosition = { top: this.page.scrollPosition["top"] + 4000, left: 0 };

this.page.scrollPosition = { top: this.page.scrollPosition["top"] + 4000, left: 0 };
var height = casper.page.viewportSize.height;
this.page.scrollPosition = { top: this.page.scrollPosition.top + height, left: 0 };