書かれたnode RSS爬虫類を共有し、主な実装プロセスを共有します.


前言
自分のコンテンツをよりよく共有し、発信するために、現在RSSサービスを提供しているサイトやコミュニティが非常に多く、現在はpythonjavaなどのプラットフォームに基づくRSS爬虫類が非常に多いため、nodeの高同時特性と結びつけて、自分でnodeでRSS爬虫類を1つ書いた--rss-worker.
概要rss-worker長持ちするrss爬虫類です.複数のURLの並列登録をサポートし、すべてのエントリを時間順に保存します.保存形式は"



"
使用または分析のために使用されます.サポートされている保存方法はfsmongodbです.
結果の表示
1つのキャプチャ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がすべて爬取された後、指定された間隔に従って再度爬取リクエストを発行します.
結果更新:メモリに1つのlastUpdateフィールドがキャッシュされ、毎回のロールアップ結果と比較されます.
サポートfsmongoストレージ:利用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)-記憶方式、配置が必要typedist両属性
  • type-記憶方式、オプションfs(デフォルト)またはmongodb
  • dist-結果を格納するファイルアドレス(自動作成)./store/rss.txt(fs)、mongodb://localhost:27017/rss_worker(mongodb)
  • timeout(Number)-毎回捕まえる間隔(秒)、デフォルトは60秒
  • start()
    つかみ始める
    forceToEnd()
    キャプチャ停止信号を発行すると、キャプチャは続行されませんが、進行中の今回のキャプチャには影響しません.