node+experss实现爬取电影天堂爬虫

2020-06-17 06:57:56易采站长站整理

res.write(num+'、电影名称--> '+obj.movieName);
res.write('<br/>');
res.write('迅雷下载链接--> '+obj.downLink);
res.write('<br/>');
res.write('详情链接--> <a href='+myurl+' target="_blank">'+myurl+'<a/>');
res.write('<br/>');
res.write('<br/>');
});
var result = {
movieLink: myurl
};
callback(null, result);
});
};

// 控制最大并发数为5,在结果中取出callback返回来的整个结果数组。
// mapLimit(arr, limit, iterator, [callback])
async.mapLimit(newMovieLinkArr, 5, function (myurl, callback) {
fetchUrl(myurl, callback);
}, function (err, result) {
// 爬虫结束后的回调,可以做一些统计结果
console.log('抓包结束,一共抓取了-->'+newMovieLinkArr.length+'条数据');
console.log('出错-->'+errLength.length+'条数据');
console.log('高评分电影:==》'+highScoreMovieArr.length);
return false;
});

});

首先是async.mapLimit对所有详情页做了一个并发,并发数为5,然后再爬取详情页,爬详情页的过程其实和爬首页的过程是一样的,所以这里不做过多的介绍,然后将有用的信息打印到页面上。

5、执行命令之后的图如下所示:

浏览器界面:

这样,我们爬虫的稍微升级版就就完成啦。可能文章写的不是很清楚,我已经把代码上传到了github上,可以将代码运行一遍,这样的话比较容易理解。后面如果有时间,可能会再搞一个爬虫的升级版本,比如将爬到的信息存入mongodb,然后再在另一个页面展示。而爬虫的程序加个定时器,定时去抓取。

备注:如果运行在浏览器中的中文乱码的话,可以将谷歌的编码设置为utf-8来解决;

代码地址:https://github.com/xianyulaodi/mySpider2

有误之处,欢迎指出