使用PhantomJS向下滚动直到页面结束

时间:2015-06-05 06:58:25

标签: javascript scroll phantomjs

正如标题所说,我正在尝试使用PhantomJS向下滚动网页。这就是我所拥有的:

var i = 0;
page.open(address, function () {

   window.setInterval(function() {

      i++;
      if(i<5) {
         page.evaluate(function() {
            window.document.body.scrollTop = document.body.scrollHeight;
         });
      }
      else { // Timeout
         fs.write(dir, page.content, 'w');
         phantom.exit();
      }

   }, 1000); // Number of milliseconds to wait between scrolls  
});

此代码有效,并在5秒后使用滚动在文件中写入网页内容,因此取决于网页的使用时间,下载所有内容或仅下载一半,季度......

好吧,我的问题是编写页面结尾的条件。我试图在if (window.document.body.scrollTop = document.body.scrollHeight)内进行page.evaluate,但它不起作用。我也尝试比较迭代之间的内容,我认为这有效,但它不是一个好的解决方案:

window.setInterval(function() {

   a = page.content;
   if (a == b) {
      console.log('END');
   } else {
      console.log('NO END');
   }

      ...
      fs.write(dir, page.content, 'w');
      phantom.exit();
   }

   b = page.content;
   a = b;

}, 1000); // Number of milliseconds to wait between scrolls

我在这个问题上很讨厌,所以我很感激一些建议。有什么想法吗?

0 个答案:

没有答案