我有这段代码:
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闭包问题的重复。
问题是,该函数scrapPages
仅运行一次,即while
循环的最后一次迭代。
有人可以帮我解决为什么会这样吗?
你有很多start
,但只有一个run
。两者都应该只使用一次。您可以start
在循环前的开头不带任何参数地进行调用,然后casper.start
在中scrapPages
进行更改casper.thenOpen
。
您可以通过进入代码来验证这一点。当start
被称为所有以前计划的步骤都将丢失。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句