gpt4 book ai didi

javascript - 点击后如何获取更新内容?

转载 作者:行者123 更新时间:2023-11-28 10:57:30 25 4
gpt4 key购买 nike

我正在努力寻找解决这个问题的方法。

  1. 打开页面并获取特定链接
  2. 点击链接(分页链接)即可获取第二页结果
  3. 阅读新内容并再次获取新链接......

这是我的 casperjs 应用程序的一部分:

var page = 1;

function getLinks() {
var links = __utils__.getElementsByXPath('//div[@class="myDiv"]//a');

return Array.prototype.map.call(links, function(e) {
return e.getAttribute('href')
});
}

casper.start("www.example.com", function(){
//
})

casper.repeat(2, function() {

this.then(function(){
links = this.evaluate(getLinks);
links = links.concat(links);
});

this.then(function(){
page++;
this.clickLabel(String(page), 'a');
});

});

如您所见,我重复了两个步骤。我设置了2,因为我只需要检查两个页面。

目前我的问题是“点击”。它有效,因为调用了新的 Url,但问题是第一步将立即执行,因此新内容未完全加载。因此,当我再次调用 getLinks() 时,我仍然处理之前的内容。

我显然想在页面完全加载时获取链接。我该怎么做?

谢谢!

最佳答案

您可以在前面加上 wait在检索这样的链接之前:

casper.repeat(2, function() {
this.wait(2000); // 2 seconds

this.then(function(){
links = this.evaluate(getLinks);
links = links.concat(links);
});

this.then(function(){
page++;
this.clickLabel(String(page), 'a');
});

});

您还可以附加 waitForResource单击后确保页面已加载。我在这里假设页码位于 URL 内部,如 page=x:

casper.repeat(2, function() {
this.then(function(){
links = this.evaluate(getLinks);
links = links.concat(links);
});

this.then(function(){
page++;
this.clickLabel(String(page), 'a');
});

this.waitForResource(new RegExp("page="+page));
});

关于javascript - 点击后如何获取更新内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517744/

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