记一个简单的增量式爬虫方案

最近在玩爬虫,于是基于以下需求场景设计了一个简单并且验证可用的增量式爬虫方案。

场景

  • 需要爬取多个同类型的网站数据
  • 网站数据持续、不定期更新
  • 数据量不太大,每日更新几千
  • 获取到的数据可以用来玩(数据分析等等),嘿嘿

对于这种类型的需求,先捋捋需要考虑的问题:

  1. 数据如何去重
  2. 怎样的存储方案

我的设计方案

方案流程图

如图:

  • 爬虫通过一个定时任务以多线程启动,爬取的数据直接放入消息队列等待下一步处理
  • 第二个定时任务将消息队列中的数据定时取出放入源数据层,这个定时任务有一个很关键的任务就是去重,在放入源数据层中先判断源数据层中有没有该条数据。
  • 第三个定时任务将源数据层中的数据进行清洗处理,最后入到操作数据层,成为真正可用的数据。
  • 还有一个定时任务用来定期将源数据层中的比较旧的数据转移到历史数据中,使得源数据层的数据量处于一个恒定范围内的值,减小数据去重以及数据处理时查询源数据层的压力。(不用担心源数据转移后会影响到数据去重那一步,因为清理的都是比较久的数据,比如一个月前,而当前正在爬取的数据可能是今天刚刚更新的,今天刚更的数据和一个月之前的数据重复的概率极低,可以忽略)

我实现该方案具体使用的技术:

  • Python爬虫
  • Redis作为消息队列
  • MongoDB作为源数据层和历史数据层
  • MySQL作为操作数据层
  • 定时任务使用了Python的schedule
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值