爲了更好分享和發佈本身的內容,如今提供RSS服務的網站和社區很是之多,如今基於python
,java
等平臺的RSS爬蟲很是之多,因此結合node高併發特性,本身用node寫了一個RSS爬蟲——rss-worker
。java
rss-worker
是一個持久的可配的rss爬蟲。支持多URL的並行爬取,而且會將全部條目按時間順序進行保存,保存格式爲"時間\n標題\n內容\n\n"
來供使用或分析,支持的保存方式有fs
與mongodb
。node
一個抓取https://github.com/alsotang.atom
,https://cnodejs.org/rss
,http://segmentfault.com/feeds/blogs
內容24小時的輸出(2015/5/6 19:30至2015/5/7 19:30 ):python
點這裏git
源碼地址:這裏 , 歡迎來star,follow。github
爬取:併發地對全部指定URL使用superagent發送請求,並在全部URL所有爬取完畢後根據指定間隔再次發出爬取請求mongodb
結果更新:在內存中緩存了一個lastUpdate
字段,與每次的爬取結果做比對npm
支持fs
和mongo
存儲:利用persistence
層提供統一接口,對外隱藏不一樣實現segmentfault
直接經過npm:數組
SHELLnpm install rss-worker --save
jsvar RssWorker = require('rss-worker'); var opt = { urls: ['https://cnodejs.org/rss', 'https://github.com/DavidCai1993.atom', 'http://segmentfault.com/feeds'], store: { type: 'fs', dist: './store/rss.txt' }, timeout: 10 }; var rssWorker = new RssWorker(opt); rssWorker.start();
生成一個RssWorker的實例緩存
options:
urls(Array)
- 必選,須要抓取的rss地址的數組 store(Object)
- 存儲方式,須要配置type
與dist
兩屬性type
- 存儲方式,可選fs
(默認)或mongodb
dist
- 存儲結果的文件地址(將會自動建立),如:./store/rss.txt
(fs),mongodb://localhost:27017/rss_worker
(mongodb)timeout(Number)
- 每次抓取的間隔(秒),默認爲60秒開始抓取
發出中止抓取信號,將不會繼續抓取,但不會影響到正在進行的本次抓取。