node 写的简单爬虫(三)

异步爬取数据

先引入

var async = require('async');

然后同样上代码

var topicUrls = [];//存所有地址
http.get(url,function(res){
     var html='';
     res.on('data',function(data){
         html +=data
     })
     res.on('end', function() {
         var $=cheerio.load(html);
        $("#subShowContent1_news2 h2 a").each((iten,i)=>{
            var href=$(i).attr('href');
             topicUrls.push(href);

        })
         console.log(topicUrls);
         // 控制最大并发数为5,异步执行函数
        async.mapLimit(topicUrls,5,function(myurl, callback){
            //console.log(myurl);
            fetchUrl(myurl, callback);
            },function (err, result) {
                console.log(result);
            });
      
     });
 }).on('error', function() {
     console.log("获取数据出错!")
 });
function fetchUrl(myurl,callback) {
    var fetchStart = new Date().getTime();
    http.get(myurl,function(res){
     var html='';
     res.on('data',function(data){
         html +=data
     })
 
     res.on('end', function() {
         var $=cheerio.load(html);

        $("#article").each((iten,i)=>{
            console.log($(i).text());
        })
      console.log("数据加载完毕");
     });
 }).on('error', function() {
     console.log("获取数据出错!")
 });

}

 结果显示如下

转载于:https://www.cnblogs.com/aSnow/p/8439084.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值