【问题标题】:Web Crawling Using Node js使用 Node js 进行网络爬取
【发布时间】:2018-08-29 21:28:06
【问题描述】:

我正在抓取 medium.com。我正在尝试显示网站上的所有链接。

var url="https://medium.com/";

    request(url,function(error,response,html){

        if(!error && response.statusCode==200){

            var $=cheerio.load(html);

            var json={content:"",link:""};
            var jsonObjects=[];

            var links=$('a');
            //console.log(links);
            $(links).each(function(i,link){
                json.content=$(link).text();
                json.link=$(link).attr('href');
                jsonObjects.push(json);
            });


        }

        fs.writeFile('Links.json',JSON.stringify(jsonObjects,null,4),function(err){
            if(!err){
                res.send("File written successfully!!!!")
            }
        })

    })

当我使用此代码时,Links.json 文件中只会再次显示一个链接。

[ { “内容”:“关于”, “链接”:“https://about.medium.com” }, { “内容”:“关于”, “链接”:“https://about.medium.com” }, { “内容”:“关于”, “链接”:“https://about.medium.com” }, { “内容”:“关于”, “链接”:“https://about.medium.com” }, { “内容”:“关于”, “链接”:“https://about.medium.com” }, { “内容”:“关于”, “链接”:“https://about.medium.com” }, { “内容”:“关于”, “链接”:“https://about.medium.com” }, {

我已经尝试了所有方法,但连medium.com主页的链接都没有 请帮忙。

【问题讨论】:

    标签: node.js express web-scraping mean-stack cheerio


    【解决方案1】:

    这是因为你不断地编辑同一个对象并一次又一次地将它推入数组。

    var json={content:"",link:""};
    

    应该在您的 each 循环内。

    var url="https://medium.com/";
    
        request(url,function(error,response,html){
    
            if(!error && response.statusCode==200){
    
                var $=cheerio.load(html);
                var jsonObjects=[];
    
                var links=$('a');
                //console.log(links);
                $(links).each(function(i,link){
                    var content = $(link).text();
                    var link = $(link).attr('href');
                    jsonObjects.push({ content: content, link: link });
                });
    
    
            }
    
            fs.writeFile('Links.json',JSON.stringify(jsonObjects,null,4),function(err){
                if(!err){
                    res.send("File written successfully!!!!")
                }
            })
    
        })
    

    【讨论】:

      猜你喜欢
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      相关资源
      最近更新 更多