如何在NodeJS中的循环内发出HTTP请求

Oli*_*Oli 1 node.js

我正在Node中编写一个命令行脚本(因为我知道JS并且在Bash上吮吸+我需要jQuery来浏览DOM)...现在我正在读取输入文件并迭代每一行.

我如何每行发出一个HTTP请求(GET),以便我可以使用jQuery加载生成的字符串并从每个页面中提取我需要的信息?我尝试过使用NPM httpsync包...所以我可以在输入文件的每一行中进行一次阻止GET调用,但它不支持HTTPS,当然我所服务的服务支持HTTPS.

谢谢!

jos*_*736 5

以压缩方式处理大量作业的好方法是异步队列.

我还建议你看一下请求的HTTP请求和cheerio用于处理你的HTML.

把这些放在一起,你会得到类似的东西:

var q = async.queue(function (task, done) {
    request(task.url, function(err, res, body) {
        if (err) return done(err);
        if (res.statusCode != 200) return done(res.statusCode);

        var $ = cheerio.load(body);
        // ...
        done();
    });
}, 5);
Run Code Online (Sandbox Code Playgroud)

然后将所有URL添加到队列中:

q.push({ url: 'https://www.example.com/some/url' });
// ...
Run Code Online (Sandbox Code Playgroud)