gpt4 book ai didi

CasperJS:遍历 URL

转载 作者:行者123 更新时间:2023-12-01 02:16:24 25 4
gpt4 key购买 nike

我对 CasperJS 很陌生,但是没有办法打开 URL 并在 for 循环中执行 CasperJS 命令吗?例如,这段代码不能像我预期的那样工作:

casper.then(function() {
var counter = 2013;
for (i = counter; i < 2014; i++) {
var file_name = "./Draws/wimbledon_draw_" + counter + ".json";
// getting some local json files
var json = require(file_name);
var first_round = json["1"];
for (var key in first_round) {
var name = first_round[key].player_1.replace(/\s+/g, '-');
var normal_url = "http://www.atpworldtour.com/Tennis/Players/" + name;
// the casper command below only executes AFTER the for loop is done
casper.thenOpen(normal_url, function() {
this.echo(normal_url);
});
}
}
});

而不是 Casper 正在打电话 thenOpen在每次迭代的每个新 URL 上,它只会在 for 循环执行后被调用。卡斯帕 thenOpen然后使用 normal_url 设置的最后一个值调用。是否没有 Casper 命令让它在 for 循环中的每次迭代中工作?

跟进:我们如何让 casper thenOpen 在 for 循环的当前迭代中返回一个值?

比如说,我需要一个返回值 thenOpen (也许如果 HTTP 状态是 404,我需要评估另一个 URL,所以我想返回 false)。这是可能的吗?

编辑 casper.thenOpen上面调用:
    var status;
// thenOpen() only executes after the console.log statement directly below
casper.thenOpen(normal_url, function() {
status = this.status(false)['currentHTTPStatus'];
if (status == 200) {
return true;
} else {
return false;
}
});
console.log(status); // This prints UNDEFINED the same number of times as iterations.

最佳答案

如果您需要获取上下文,请使用此处的示例:
https://groups.google.com/forum/#!topic/casperjs/n_zXlxiPMtk

我使用了 IIFE(立即调用函数表达式)选项。

例如:

for(var i in links) {
var link = links[i];

(function(index) {
var link = links[index]
var filename = link.replace(/#/, '');
filename = filename.replace(/\//g, '-') + '.png';

casper.echo('Attempting to capture: '+link);
casper.thenOpen(vars.domain + link).waitForSelector('.title h1', function () {
this.capture(filename);
});
})(i);
}
links可能是一个对象数组,因此如果需要,您的索引是对一组属性的引用......
var links = [{'page':'some-page.html', 'filename':'page-page.png'}, {...}]

关于CasperJS:遍历 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360993/

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