人工智能现场

node.js 使用superagent,cheerio与async写爬虫(二)

前一章的已经可以爬到结果,可惜速度太慢了,2016年的妹子图网页大概600页,一页一页的爬完全部需要差不多15分钟。如果可以一次爬十页,就会快很多。用 async 这个库就可以实现。查看全部代码 github
在原来的代码基础上加上这一段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var pages = [];
for(var i=2300;i>1000;i--){ //从2300页开始
pages.push(i);
}
async.mapLimit(pages, 20, //同时爬取20页
function (page, cb) {
getSeeds(page, cb);
},
function (err, results) {
setTimeout(function () { //等一会儿,其他的页面都callback
console.log(topten)
}, 3000);
}
);
//在getSeeds里面加上callback
if(year =='2015') //当图片的上传时间出现2015就停止
callback(true)
else
callback()

这样用新的代码不到两分钟就爬好了,只是有时会遇到error superagent: double callback bug,这个我还不明白怎么回事,如果你知道这是什么,留言告诉我吧。

坚持原创技术分享,您的支持将鼓励我继续创作!