node.js爬蟲框架node-crawler初體驗
百度爬蟲這個詞語,一般出現(xiàn)的都是python相關(guān)的資料。
py也有很多爬蟲框架,比如scrapy,Portia,Crawley等。
之前我個人更喜歡用C#做爬蟲。
隨著對nodejs的熟悉。發(fā)現(xiàn)做這種事情還是用腳本語言適合多了,至少不用寫那么多的實體類。而且腳本一般使用比較簡單?! ?/p>
在github上搜索node+spider,排名第一的就是node-crawler
github:https://github.com/bda-research/node-crawler
簡單使用
npm 安裝:
npm install crawler
new一個crawler對象
var c = new Crawler({ // 在每個請求處理完畢后將調(diào)用此回調(diào)函數(shù) callback : function (error, res, done) { if(error){ console.log(error); }else{ var $ = res.$; // $ 默認(rèn)為 Cheerio 解析器 // 它是核心jQuery的精簡實現(xiàn),可以按照jQuery選擇器語法快速提取DOM元素 console.log($("title").text()); } done(); } });
然后往crawler隊列里面不停的加url就行了,
// 將一個URL加入請求隊列,并使用默認(rèn)回調(diào)函數(shù) c.queue('http://www.amazon.com'); // 將多個URL加入請求隊列 c.queue(['http://www.google.com/','http://www.yahoo.com']);
控制并發(fā)速度
爬蟲框架一般都是同時去爬多個頁面,但是速度過快會觸發(fā)目標(biāo)網(wǎng)站的反爬蟲機制,也同時影響別人網(wǎng)站的性能。
控制最大的并發(fā)數(shù)量
var c = new Crawler({ // 最大并發(fā)數(shù)默認(rèn)為10 maxConnections : 1, callback : function (error, res, done) { if(error){ console.log(error); }else{ var $ = res.$; console.log($("title").text()); } done(); } });
使用慢速模式
使用參數(shù) rateLimit 啟用慢速模式,兩次請求之間會閑置 rateLimit 毫秒,而 maxConnections 將被強行修改為 1 。
var c = new Crawler({ // `maxConnections` 將被強制修改為 1 maxConnections : 10, // 兩次請求之間將閑置1000ms rateLimit: 1000, callback : function (error, res, done) { if(error){ console.log(error); }else{ var $ = res.$; console.log($("title").text()); } done(); } });
下載圖片等靜態(tài)文件
var c = new Crawler({ encoding:null, jQuery:false,// set false to suppress warning message. callback:function(err, res, done){ if(err){ console.error(err.stack); }else{ fs.createWriteStream(res.options.filename).write(res.body); } done(); } }); c.queue({ uri:"https://nodejs.org/static/images/logos/nodejs-1920x1200.png", filename:"nodejs-1920x1200.png" });
以上就是node.js爬蟲框架node-crawler初體驗的詳細(xì)內(nèi)容,更多關(guān)于爬蟲框架node-crawler的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nodejs async異步常用函數(shù)總結(jié)(推薦)
這篇文章主要介紹了nodejs async異步常用函數(shù)總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-11-11nodejs抓取notion?emoji?svg資源的腳本示例
這篇文章主要為大家介紹了nodejs抓取notion?emoji?svg資源腳本實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02使用upstart把nodejs應(yīng)用封裝為系統(tǒng)服務(wù)實例
這篇文章主要介紹了使用upstart把nodejs應(yīng)用封裝為系統(tǒng)服務(wù)實例,需要的朋友可以參考下2014-06-06