我正在尝试抓取一些网站。这是我的代码:
for (var i = 0; i < urls.length; i++) {
url = urls[i];
console.log("Start scraping: " + url);
page.open(url, function () {
waitFor(function() {
return page.evaluate(function() {
return document.getElementById("progressWrapper").childNodes.length == 1;
});
}, function() {
var price = page.evaluate(function() {
// do something
return price;
});
console.log(price);
result = url + " ; " + price;
output = output + "\r\n" + result;
});
});
}
fs.write('test.txt', output);
phantom.exit();
我想抓取数组 url 中的所有站点,提取一些信息,然后将此信息写入文本文件。
但是for循环好像有问题。在不使用循环的情况下仅抓取一个站点时,一切都可以按我的意愿工作。但是在循环中,首先什么也没有发生,然后是线
console.log("Start scraping: " + url);
显示,但一次太多。如果 url = {a,b,c},那么 phantomjs 会:
Start scraping: a
Start scraping: b
Start scraping: c
Start scraping:
似乎根本没有调用 page.open 。我是 JS 的新手,所以我很抱歉这个愚蠢的问题。