nodejs爬虫-笨笨兔的故事

##起始
想找个笨笨兔的故事txt版的放kindle上 无奈网上都是pdf版的,不过倒是有在线阅读的
http://www.linuxidc.com/Linux/2010-12/30786.htm
于是打算自己用nodejs写个爬虫来爬一下网站内容生成txt传输到kindle
具体请参考我的github

开始编写

用到的库有

  • superagent //request请求
  • async //并发(异步)流程控制库 用来控制并发数
  • cheerio //nodejs的jquery

引入库

1
2
3
4
5
6
7
8
//引入request模块
var superagent=require("superagent");
//引入async并发模块
var async=require("async");
//引入DOM操作模块
var cheerio=require("cheerio");
//引入file模块
var fs=require("fs")

初始化url

1
2
3
4
5
6
7
8
9
//生成url
var host="http://www.linuxidc.com/Linux/2010-12/30786";
var urls=[];
//urls初始化
urls.push(host+".htm");
for(var i=2;i<=129;i++){
urls.push(host+"p"+i+".htm")
}

并发爬取url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//并发扒取url
async.mapLimit(urls,5,function(url,callback){
//每次爬取urls获取html
superagent.get(url).end(function(err,html){
if(err){console.log(err)}
var $=cheerio.load(html.text);
var txt=$("#content").text();
//爬去完毕后调用callback
callback(null,txt)
})
},function(err,result){
//result是129个url爬去完毕后汇总的结果
console.log(result)
//fs.mkdir("./txt");
result.forEach(function(e,i){
fs.writeFile("./txt/笨兔兔的故事.txt",e+"\n\r",{flag:"a",encoding:"utf8"},function(err){})
})
})

结束

至此你就写好了一个爬虫,应该没啥技术难点吧
都用到了三个库当中的一部分功能