gpt4 book ai didi

javascript - CasperJS 评估向下滚动后不执行

转载 作者:行者123 更新时间:2023-12-03 05:55:25 25 4
gpt4 key购买 nike

我已经能够滚动到网页末尾以加载所有动态内容。但完成此操作后,我想评估该页面以获得一些数据。我的问题是,如果我运行的东西与简单的不同

casper.echo("something");

我的代码损坏了,我没有得到契约数据。这是我的代码:

var casper = require('casper').create();
casper.start("http://mypageWithDynamicContentOnScroll.com");
var linksPrendas = [];
casper.waitForSelector('#idOfDivContainingDynamicContent',function(){
scrollNow();
});
var currentHeight;
var page = 1;
function scrollNow(){
casper.scrollToBottom();
casper.waitForSelector("#page"+page+"Height", function() {
casper.echo('scrolling...');
page++;
scrollNow();
},
function _onTimeout(){

});
}

var data = '';
casper.then(function(){
casper.echo('e');
//data = __utils__.findOne('div#someId').textContent;
casper.echo('f');
//var links = this.evaluate(function() {
// casper.echo("Evaluate ");
// var elements = __utils__.findAll('a');
// return elements. map (function (e) {
// return e.getAttribute('href');
// });
//});
});

casper.run(function(){

// var data = casper.evaluate(function() {
// var elements = __utils__.findAll('a.productListLink');
// return elements.map(function(e) {
// return e.getAttribute('href');
// });
// casper.echo("Evaluate ");
// return [1,2,3];
// });
casper.echo("Then");
casper.echo(elements);

casper.echo("DONE").exit();

});

您可以从我的一些注释代码中看到,我尝试了许多不同的选项,但没有成功。我还尝试将评估或 findAll 放在 _onTimeout 回调中。我要么破坏代码并且永远不会打印“DONE”,要么我永远无法执行评估或其他任何内容中的代码。

滚动效果很好,无需滚动我就可以评估页面并获取所需的内容。

那么我怎样才能做到这一点呢?滚动完成后评估页面?

谢谢

编辑:我还测试了将回调函数传递给scrollNow()以在调用scrollNow()后继续执行。回调被调用,但同样,无法评估 findAll 或任何其他函数来获取所需的数据。

最佳答案

casper 对象casper.evaluate 之外可用,并且 __utils__ casper.evaluate 内可用。调用 casper.echo(...) 将导致 TypeError 并停止执行。

如果您想从页面上下文(casper.evaluate内部)打印某些内容,那么您需要注册“remote.message”事件:

casper.on("remote.message", function(msg){
this.echo(msg);
});

...
casper.evaluate(function(){
console.log("something from the page");
});

其他一切看起来都很好。

关于javascript - CasperJS 评估向下滚动后不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com