摘要:前言為了更好分享和發布自己的內容,現在提供服務的網站和社區非常之多,現在基于,等平臺的爬蟲非常之多,所以結合高并發特性,自己用寫了一個爬蟲。簡介是一個持久的可配的爬蟲。結果演示一個抓取,,內容小時的輸出至點這里源碼地址這里,歡迎來,。
前言
為了更好分享和發布自己的內容,現在提供RSS服務的網站和社區非常之多,現在基于python,java等平臺的RSS爬蟲非常之多,所以結合node高并發特性,自己用node寫了一個RSS爬蟲——rss-worker。
簡介rss-worker是一個持久的可配的rss爬蟲。支持多URL的并行爬取,并且會將所有條目按時間順序進行保存,保存格式為"時間 標題 內容 "來供使用或分析,支持的保存方式有fs與mongodb。
結果演示一個抓取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 ):
點這里
源碼地址:這里 , 歡迎來star,follow。
主要流程爬取:并發地對所有指定URL使用superagent發送請求,并在所有URL全部爬取完畢后根據指定間隔再次發出爬取請求
結果更新:在內存中緩存了一個lastUpdate字段,與每次的爬取結果作比對
支持fs和mongo存儲:利用persistence層提供統一接口,對外隱藏不同實現
安裝使用直接通過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();API new RssWorker(options)
生成一個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秒
start()開始抓取
forceToEnd()發出停止抓取信號,將不會繼續抓取,但不會影響到正在進行的本次抓取。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85690.html
摘要:目前這個爬蟲還是比較簡單的類型的,直接抓取頁面,然后在頁面中提取數據,保存數據到數據庫。總結寫這個項目其實主要的難點在于程序穩定性的控制,容錯機制的設置,以及錯誤的記錄,目前這個項目基本能夠實現直接運行一次性跑通整個流程。 前言 之前研究數據,零零散散的寫過一些數據抓取的爬蟲,不過寫的比較隨意。有很多地方現在看起來并不是很合理 這段時間比較閑,本來是想給之前的項目做重構的。后來 利用這...
摘要:我是一個知乎輕微重度用戶,之前寫了一只爬蟲幫我爬取并分析它的數據,我感覺這個過程還是挺有意思,因為這是一個不斷給自己創造問題又去解決問題的過程。所以這只爬蟲還有登陸知乎搜索題目的功能。 我一直覺得,爬蟲是許多web開發人員難以回避的點。我們也應該或多或少的去接觸這方面,因為可以從爬蟲中學習到web開發中應當掌握的一些基本知識。而且,它還很有趣。 我是一個知乎輕微重度用戶,之前寫了一只爬...
摘要:使用推出的語言開發實現,基于內核的,,以及等技術。初步了解容器與虛擬機的區別原理不同上圖是關于和傳統虛擬機區別的截圖。從而實現模擬更改鏡像的作用。下面的實踐以為例,。指令讓外界能通過容器的端口進行網絡通信。使用可以啟動關閉容器。 Docker 是一個能讓程序跑在一個它無法感知的、用于隔絕外界環境里的容器的工具。 Docker 簡介 最初是 dotCloud 公司創始人 Solomon ...
摘要:使用推出的語言開發實現,基于內核的,,以及等技術。初步了解容器與虛擬機的區別原理不同上圖是關于和傳統虛擬機區別的截圖。從而實現模擬更改鏡像的作用。下面的實踐以為例,。指令讓外界能通過容器的端口進行網絡通信。使用可以啟動關閉容器。 Docker 是一個能讓程序跑在一個它無法感知的、用于隔絕外界環境里的容器的工具。 Docker 簡介 最初是 dotCloud 公司創始人 Solomon ...
閱讀 1459·2021-11-22 13:52
閱讀 1281·2021-09-29 09:34
閱讀 2690·2021-09-09 11:40
閱讀 3031·2019-08-30 15:54
閱讀 1255·2019-08-30 15:53
閱讀 971·2019-08-30 11:01
閱讀 1354·2019-08-29 17:22
閱讀 1943·2019-08-26 10:57