gpt4 book ai didi

javascript - Node js 请求 promise 、抓取

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:58 25 4
gpt4 key购买 nike

我正在抓取一个网站,我使用带有 Node js的请求库,所以我得到了一个url数组,我循环遍历并对每个url执行一个请求,问题是请求是异步的,我只需要在之后做一些事情所有的请求都完成了,这里是代码:

for (var i = 0; i < urls.length; i++) {

request(urls[i], function (err,resp,body) {

if (!err && resp.statusCode == 200) {
var $ = cheerio.load(body);
var string = $('.author .mini').text();
var regExp = /(\+971|00971|05)\d{1,12}/g;
if(string.match(regExp)) {mobilePhones.push(string.match(regExp)[0])}



}



});
}

所以当所有请求完成后,我只想 console.log(mobilePhones);

最佳答案

使用 promise.all() 可以更容易地完成此任务。 :

var myFunc = function (err,resp,body) {

if (!err && resp.statusCode == 200) {
var $ = cheerio.load(body);
var string = $('.author .mini').text();
var regExp = /(\+971|00971|05)\d{1,12}/g;
if(string.match(regExp)) {mobilePhones.push(string.match(regExp)[0])}
};


var p1 = request(urls[0], myFunc);

var p2 = request(urls[1], myFunc);

// Do this for all of urls.length

Promise.all([p1, p2, p3, p4, p5]).then(() => {
console.log(mobilePhones);
});

关于javascript - Node js 请求 promise 、抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38771256/

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