用node.js写的爬虫爬cnode社区的作者的时候为什么只能爬一部分?
发布于 3天前 作者 CommanderXL 288 次浏览 来自 问答

今天学习@alsotang写的爬虫教程.

在挑战目标里面,是将文章的author也输出。

但是最后输出结果的时候,只有部分的author能输出

 var express=require("express");
 var app=express();
 var superagent=require("superagent");
 var cheerio=require("cheerio");
app.get("/",function(req,res,next){
    superagent.get("https://cnodejs.org/")
        .end(function(err,sres){
            //常规的错误请求
            if(err){
                console.log(err.message);
                return res.redirect("/");
            }
            var $=cheerio.load(sres.text);
            var item=[];
            $("#topic_list .topic_title").each(function(idx,element){
                var $element=$(element);
                var href=$element.attr("href");

                item.push({
                        title:$element.attr("title"),
                        href:$element.attr("href")                                      
                    });
                superagent.get("https://cnodejs.org"+href).end(function(err,ssres){
                    var $$=cheerio.load(ssres.text);
                    item[idx].author=$$("div.changes").find("span:nth-child(2) a").text();
                    console.log(item[idx]);
                })
            })
            res.send(item);
        })
});
    app.listen(8080,function(){
    console.log("app is listening on the port of 8080");
})

QQ图片20150508143920.png

7 回复

我上次写的爬segmentfault的所有tag描述开始就是那么循环,频率太高,你把状态码打出来看看,是不是502,是的话就用async.mapLimit限制下并发 https://github.com/luoyjx/tag-spider 代码不咋地,别拍我

@luoyjx 我记起来了,昨天晚上我就不停的在爬cnode。。今天早上突然上不去cnodejs社区。返回的502,我估计是把我Ip封了的原因0 0

@CommanderXL 是的,你要控制一下爬虫的并发数

@CommanderXL 是nginx做了限制 自豪地采用 CNodeJS ionic

爬虫,各种流泪啊, 记得以前爬文库,被封了ip,又被封了账号。。。。。

@gwesley 对啊,如果不控制并发量的话,不停的爬就封IP了

回到顶部