脚本宝典收集整理的这篇文章主要介绍了分享一个写的node RSS爬虫,以及主要实现流程,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
前言
为了更好分享和发布自己的内容,现在提供RSS服务的网站和社区非常之多,现在基于python
,java
等平台的RSS爬虫非常之多,所以结合node高并发特性,自己用node写了一个RSS爬虫——rss-worker
。
简介
rss-worker
是一个持久的可配的rss爬虫。支持多URL的并行爬取,并且会将所有条目按时间顺序进行保存,保存格式为"时间n标题n内容nn"
来供使用或分析,支持的保存方式有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:
npm install rss-worker --save
示例
var 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()
发出停止抓取信号,将不会继续抓取,但不会影响到正在进行的本次抓取。
以上是脚本宝典为你收集整理的分享一个写的node RSS爬虫,以及主要实现流程全部内容,希望文章能够帮你解决分享一个写的node RSS爬虫,以及主要实现流程所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。