node 写的简单爬虫(三)
2024-09-01 08:41:48
异步爬取数据
先引入
var async = require('async');
然后同样上代码
var topicUrls = [];//存所有地址
http.get(url,function(res){
var html='';
res.on('data',function(data){
html +=data
})
res.on('end', function() {
var $=cheerio.load(html);
$("#subShowContent1_news2 h2 a").each((iten,i)=>{
var href=$(i).attr('href');
topicUrls.push(href); })
console.log(topicUrls);
// 控制最大并发数为5,异步执行函数
async.mapLimit(topicUrls,5,function(myurl, callback){
//console.log(myurl);
fetchUrl(myurl, callback);
},function (err, result) {
console.log(result);
});
});
}).on('error', function() {
console.log("获取数据出错!")
});
function fetchUrl(myurl,callback) {
var fetchStart = new Date().getTime();
http.get(myurl,function(res){
var html='';
res.on('data',function(data){
html +=data
}) res.on('end', function() {
var $=cheerio.load(html); $("#article").each((iten,i)=>{
console.log($(i).text());
})
console.log("数据加载完毕");
});
}).on('error', function() {
console.log("获取数据出错!")
}); }
结果显示如下
最新文章
- 设置这些之后,Google突然可以打开了
- Ceph剖析:Paxos算法实现
- 运用DebugDiag诊断ASP.Net异常
- CentOS 6.6 配置PuTTY远程登录
- LeetCode - 44. Wildcard Matching
- 低功耗蓝牙(BLE)透传模块 ——RF-BM-S01(BQB认证)
- Linux /dev 自动创建设备节点
- Spring IOC以及三种注入方式
- JS画几何图形之五【过圆外一点作切线】
- July 06th. 2018, Week 27th. Friday
- SpringBoot四大神器之Actuator
- 201771010141 周强 面向对象程序设计(Java)第12周作业
- POJ 1305
- mormot支持TCP/IP
- Kafka-Record(消息格式)
- asp.net 网页跳转的几种常用方法
- Json4:使用json-lib解析、生成Json
- 【刷题】HDU 3435 A new Graph Game
- Win7下VS2010不能链接问题
- Tasker to detect and vibrate once the ougoing call is being answered