我正在尝试抓取一些网站。这是我的代码:
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 的新手,所以我很抱歉这个愚蠢的问题。