gpt4 book ai didi

javascript - 使用 CasperJS 迭代参数化 URL 时仅执行最后一次迭代

转载 作者:行者123 更新时间:2023-12-03 11:09:34 24 4
gpt4 key购买 nike

我有这段代码:

var casper = require('casper').create();
var startID = 21;
var endID = 13533;
while (startID <= endID) {
scrapPages(startID);
startID++;
}

function scrapPages(i) {
var str = "Starting to get the HTML for the problem" + i;
console.log(str);

var url = 'http://community.topcoder.com/stat?c=problem_statement&pm=' + i;
casper.start(url, function() {
this.echo(startID);
var result = this.getHTML('td.problemText');
casper.then(function() {
var fileName = 'problem' + i + ".html";
require('fs').write(fileName, result, 'w');
this.echo("writing it to filename: " + fileName)
});
});
}

casper.run();

我所做的就是尝试解析 Topcoder 的所有问题。我相信这个问题与 Javascript Closures 上的问题并不重复。

问题是,函数 scrapPages 仅运行一次,即 while 循环的最后一次迭代。

有人可以帮我解决为什么会发生这种情况吗?

最佳答案

您有许多开始,但只有一次运行。两者都应该只使用一次。您可以在循环之前不带参数地调用 start ,然后将 scrapPages 内部的 casper.start 更改为 casper.thenOpen .

您可以通过进入 code 来验证这一点。当调用 start 时,所有先前安排的步骤都会丢失。

关于javascript - 使用 CasperJS 迭代参数化 URL 时仅执行最后一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672094/

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