node.js爬蟲框架node-crawler初體驗(yàn)
百度爬蟲這個(gè)詞語,一般出現(xiàn)的都是python相關(guān)的資料。
py也有很多爬蟲框架,比如scrapy,Portia,Crawley等。
之前我個(gè)人更喜歡用C#做爬蟲。
隨著對(duì)nodejs的熟悉。發(fā)現(xiàn)做這種事情還是用腳本語言適合多了,至少不用寫那么多的實(shí)體類。而且腳本一般使用比較簡(jiǎn)單?! ?/p>
在github上搜索node+spider,排名第一的就是node-crawler
github:https://github.com/bda-research/node-crawler
簡(jiǎn)單使用
npm 安裝:
npm install crawler
new一個(gè)crawler對(duì)象
var c = new Crawler({
// 在每個(gè)請(qǐng)求處理完畢后將調(diào)用此回調(diào)函數(shù)
callback : function (error, res, done) {
if(error){
console.log(error);
}else{
var $ = res.$;
// $ 默認(rèn)為 Cheerio 解析器
// 它是核心jQuery的精簡(jiǎn)實(shí)現(xiàn),可以按照jQuery選擇器語法快速提取DOM元素
console.log($("title").text());
}
done();
}
});
然后往crawler隊(duì)列里面不停的加url就行了,
// 將一個(gè)URL加入請(qǐng)求隊(duì)列,并使用默認(rèn)回調(diào)函數(shù)
c.queue('http://www.amazon.com');
// 將多個(gè)URL加入請(qǐng)求隊(duì)列
c.queue(['http://www.google.com/','http://www.yahoo.com']);
控制并發(fā)速度
爬蟲框架一般都是同時(shí)去爬多個(gè)頁面,但是速度過快會(huì)觸發(fā)目標(biāo)網(wǎng)站的反爬蟲機(jī)制,也同時(shí)影響別人網(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 啟用慢速模式,兩次請(qǐng)求之間會(huì)閑置 rateLimit 毫秒,而 maxConnections 將被強(qiáng)行修改為 1 。
var c = new Crawler({
// `maxConnections` 將被強(qiáng)制修改為 1
maxConnections : 10,
// 兩次請(qǐng)求之間將閑置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初體驗(yàn)的詳細(xì)內(nèi)容,更多關(guān)于爬蟲框架node-crawler的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- node.js實(shí)現(xiàn)簡(jiǎn)單爬蟲示例詳解
- node.js做一個(gè)簡(jiǎn)單的爬蟲案例教程
- Node.js爬蟲如何獲取天氣和每日問候詳解
- 基于node.js實(shí)現(xiàn)爬蟲的講解
- node.js學(xué)習(xí)筆記之koa框架和簡(jiǎn)單爬蟲練習(xí)
- 淺談Node.js爬蟲之網(wǎng)頁請(qǐng)求模塊
- 使用 Node.js 開發(fā)資訊爬蟲流程
- 基于node.js制作簡(jiǎn)單爬蟲教程
- 利用node.js寫一個(gè)爬取知乎妹紙圖的小爬蟲
- node.js爬蟲爬取拉勾網(wǎng)職位信息
- Node.js?實(shí)現(xiàn)簡(jiǎn)單爬蟲的示例代碼
相關(guān)文章
nodejs async異步常用函數(shù)總結(jié)(推薦)
這篇文章主要介紹了nodejs async異步常用函數(shù)總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-11-11
nodejs抓取notion?emoji?svg資源的腳本示例
這篇文章主要為大家介紹了nodejs抓取notion?emoji?svg資源腳本實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
使用upstart把nodejs應(yīng)用封裝為系統(tǒng)服務(wù)實(shí)例
這篇文章主要介紹了使用upstart把nodejs應(yīng)用封裝為系統(tǒng)服務(wù)實(shí)例,需要的朋友可以參考下2014-06-06
使用nvm安裝node?v12.22.12時(shí)遇到的問題解決
本文介紹了使用nvm安裝node?v12.22.12時(shí)遇到的問題解決,解決了上手動(dòng)下載和安裝npm以解決版本不匹配的問題,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12

