Javascript Casperjs抓取动态内容
我正试图用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
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 };