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