分享一个写的node RSS爬虫,以及重要完成流程

媒介

为了更好分享和宣布本身的内容,如今供应RSS效劳的网站和社区异常之多,如今基于pythonjava等平台的RSS爬虫异常之多,所以连系node高并发特征,本身用node写了一个RSS爬虫——rss-worker

简介

rss-worker是一个耐久的可配的rss爬虫。支撑多URL的并行爬取,而且会将一切条目按时候递次举行保留,保留花样为"时候\n题目\n内容\n\n"来供运用或剖析,支撑的保留体式格局有fsmongodb

效果演示

一个抓取https://github.com/alsotang.atomhttps://cnodejs.org/rsshttp://segmentfault.com/feeds/blogs内容24小时的输出(2015/5/6 19:30至2015/5/7 19:30 ):

点这里

源码地点:这里 , 欢迎来star,follow。

重要流程

爬取:并发地对一切指定URL运用superagent发送要求,并在一切URL悉数爬取终了后依据指定距离再次发出爬取要求

效果更新:在内存中缓存了一个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()

发出住手抓取信号,将不会继承抓取,但不会影响到正在举行的本次抓取。

    原文作者:菜菜蔡伟
    原文地址: https://segmentfault.com/a/1190000002759315
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞