节点js请求承诺,抓取

米凯尔

我正在抓取一个网站,我将请求库与节点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);

金马仑637

使用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);
  });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

节点JS请求获取页面错误500

来自分类Dev

mysql请求后节点JS重定向

来自分类Dev

cytoscape.js禁用抓取和移动节点

来自分类Dev

在节点js路由内发出http请求

来自分类Dev

验证节点js中的特定请求

来自分类Dev

带有身份验证的PUT的节点JS请求承诺

来自分类Dev

使用请求模块抓取Node.js

来自分类Dev

节点JS返回而没有兑现承诺

来自分类Dev

节点JS返回而没有兑现承诺

来自分类Dev

节点JS请求获取原始网址

来自分类Dev

承诺可观察到的节点js循环

来自分类Dev

节点Js中的HTTP请求

来自分类Dev

在节点js请求中使用GET方法?

来自分类Dev

使用请求承诺和Node.js缓存HTML

来自分类Dev

使用节点的请求承诺将数据发布到JSON REST API

来自分类Dev

在节点js路由内发出http请求

来自分类Dev

在openshift节点js应用中获取请求

来自分类Dev

使用普通的JS承诺编写jQuery AJAX请求

来自分类Dev

节点JS错误:“请求无法满足”

来自分类Dev

节点JS可以替换Ajax请求吗?

来自分类Dev

连续发布请求节点JS

来自分类Dev

节点中的请求承诺未按预期工作

来自分类Dev

节点js请求的授权问题

来自分类Dev

如何重写节点js请求

来自分类Dev

在节点js中发出多个请求

来自分类Dev

无法解析节点js中的json请求

来自分类Dev

FIREBASE admin sdk 不返回承诺?节点JS

来自分类Dev

Node.js - 如何使用承诺测试 HTTPS 请求

来自分类Dev

抓取请求