论坛爬虫设计与实现

需求概述

论坛爬虫的基本需求有以下几个:

  1. 爬取指定论坛的帖子信息,并且能方便地新增其他论坛的爬取需求。
  2. 爬取到的帖子需要持久化到数据库中,在后台能够以论坛为单位查看爬取回来的帖子信息。
  3. 具有关键字过滤功能,可以对指定论坛设置若干个关键字,当爬取到的帖子匹配到关键字时,可以给指定邮箱或手机发送消息通知爬取事件。
  4. 爬虫后台可以实时监控爬取情况,并查看爬取信息。

架构设计

有了基础需求,就可以设计出一个基础架构,以下是论坛爬虫架构图:

论坛爬虫架构图

爬虫前端可以以一个独立的子项目存在,因为今后会有扩展需求,爬虫前端必须考虑如何让多个论坛的爬取代码互不干扰且又可以抽象出一些共性。之所以使用消息队列(MQ),主要是考虑到爬虫前端获得信息后,这个信息一般会有多个消费方,比较常见的有存储服务、关键字提取服务、事件报警服务等,如果在前期这些服务不是很复杂,也可以考虑合并成一个服务来处理,不过最好还是使用MQ来解耦,以备将来可能需要拆分服务。管理后台负责一些基本的展示类需求,如查看帖子、监控爬虫状态信息等。

具体实现

todo