【问题标题】:nodejs How to scraping multi site in scraping loopnodejs如何在抓取循环中抓取多个站点
【发布时间】:2018-04-17 17:00:36
【问题描述】:

我正在尝试在 node 中制作简单的提要阅读器,但我在 node.js 中遇到了多个请求的问题。例如, 我得到了这个代码:

var url = [
    "https://site1.com",
    "https://site2.com"
]; 
var items = [];
var i;
for(i=0; i<url.length; i++){
    request(url[i], function(err, respone, html){
    if(!err) {
        var $ = cheerio.load(html);
        if(i == 0){
            $(".class1").find("a").each(function (index, element){
                items.push($(element).text());
            });
        }else if(i == 1){
            $(".class1").find("a").each(function (index, element){
                items.push($(element).text());
            });
        }
    }
    });
}

如何在抓取循环中抓取多个站点?

【问题讨论】:

    标签: javascript node.js web-scraping web-crawler cheerio


    【解决方案1】:

    在这种情况下,您可以将PromisePromise.all 一起使用,因为网络请求可以是异步的。

    var urls = [
        "https://site1.com",
        "https://site2.com"
    ]; 
    var promises = [];
       
    for(var url of urls) {
      promises.push(new Promise((resolve, reject)=>{
        request(url, function(err, respone, html){
            if(err) {
              return reject(err);
            }
            var $ = cheerio.load(html);
            var items = [];
            $(".class1").find("a").each(function (index, element){
              items.push($(element).text());
            });
            return resolve(items);
        });
      })
    }
    
    Promise.all(promises).then((results)=>{
      console.log(results);
    }).catch((error)=>{
      console.log(error);
    });

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      相关资源
      最近更新 更多