用node.js写的爬虫爬cnode社区的作者的时候为什么只能爬一部分?
发布于 10 年前 作者 CommanderXL 4751 次浏览 最后一次编辑是 8 年前 来自 问答

今天学习@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了

回到顶部