nodejs爬虫-笨笨兔的故事

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

开始编写

用到的库有

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

引入库

//引入request模块 
var superagent=require("superagent"); 
//引入async并发模块 
var async=require("async"); 
//引入DOM操作模块 
var cheerio=require("cheerio"); 
//引入file模块 
var fs=require("fs") 

初始化url

//生成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

//并发扒取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){}) 
   }) 
}) 

结束

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