向下滚动页面事件 x 秒
Scroll down page event for x seconds
我目前可以在 CasperJS 的帮助下向下滚动页面。我看到这个 article 关于如何根据某些属性的可见性滚动无限页面。但是,我不想将它基于元素的可见性,而是想知道是否有一种方法可以设置一个计时器,让它在退出之前保持向下滚动多长时间。怎么会有这种事?
//function to scroll
function tryAndScroll(casper) {
casper.page.scrollPosition = {
top: casper.page.scrollPosition["top"] + 40000,
left: 0
};
}
/**
* Everything starts here!
* I use the mobile version of facebook as the DOM is waaay simpler to scrape.
*/
casper.start('https://www.somesite.com', function() {
});
casper.then(function() {
tryAndScroll(this);
});
casper.then(function() {;
this.exit();
});
casper.run();
这是一个简单的方法:
function tryAndScroll(casper) {
casper.page.scrollPosition = {
top: casper.page.scrollPosition["top"] + 300,
left: 0
};
}
casper.start(url).then(function() {
var self = this;
var intervalId = setInterval(function(){
tryAndScroll(self);
}, 100); // retry interval
self.wait(10000 /* infinite scroll timeout */, function(){
clearInterval(intervalId);
});
}).run();
由于setInterval()
不是CasperJS的step函数,这基本上脱离了CasperJS的控制流程。 wait()
是必需的,这样 CasperJS 就不会在滚动期间执行其他操作。
此外,您不能使用 40000 像素的滚动距离。这太大了,PhantomJS 将无法截屏。
我目前可以在 CasperJS 的帮助下向下滚动页面。我看到这个 article 关于如何根据某些属性的可见性滚动无限页面。但是,我不想将它基于元素的可见性,而是想知道是否有一种方法可以设置一个计时器,让它在退出之前保持向下滚动多长时间。怎么会有这种事?
//function to scroll
function tryAndScroll(casper) {
casper.page.scrollPosition = {
top: casper.page.scrollPosition["top"] + 40000,
left: 0
};
}
/**
* Everything starts here!
* I use the mobile version of facebook as the DOM is waaay simpler to scrape.
*/
casper.start('https://www.somesite.com', function() {
});
casper.then(function() {
tryAndScroll(this);
});
casper.then(function() {;
this.exit();
});
casper.run();
这是一个简单的方法:
function tryAndScroll(casper) {
casper.page.scrollPosition = {
top: casper.page.scrollPosition["top"] + 300,
left: 0
};
}
casper.start(url).then(function() {
var self = this;
var intervalId = setInterval(function(){
tryAndScroll(self);
}, 100); // retry interval
self.wait(10000 /* infinite scroll timeout */, function(){
clearInterval(intervalId);
});
}).run();
由于setInterval()
不是CasperJS的step函数,这基本上脱离了CasperJS的控制流程。 wait()
是必需的,这样 CasperJS 就不会在滚动期间执行其他操作。
此外,您不能使用 40000 像素的滚动距离。这太大了,PhantomJS 将无法截屏。