美文网首页Python爬虫爬虫专题@IT·互联网
爬虫架构|如何设计一款类“即刻”信息订阅推送的爬虫架构(二)

爬虫架构|如何设计一款类“即刻”信息订阅推送的爬虫架构(二)

作者: 小怪聊职场 | 来源:发表于2017-11-15 00:45 被阅读0次

    我之前在爬虫架构|如何设计一款类“即刻”信息订阅推送的爬虫架构(一)中简单描述了我要做这个爬虫架构的思路,今天我们真正确定了这个架构的实现思路。分享如下:

    一、最开始的爬虫架构任务创建方式(常规方式)

    我们之前设计的爬虫任务创建方式为:用户A创建了一个主题X并选择了对应的内容源和装饰条件之后我们就会创建对应的爬虫任务,如果这个主题X选择了多个内容源1、2、3时,就会创建3个任务X1、X2、X3。另外如果用户B创建了另一个主题Y,选择的内容源为1、2后,那么就会创建Y1、Y2爬虫任务。

    基于以上的爬虫任务设定方式,我们的任务数量是与用户、主题、内容源3个元素去确定的,也就是说爬虫任务的数量是由用户、主题、内容源去唯一确定的,这样导致的结果就是会重复去爬虫相同内容源的数据,这对爬虫系统来说是一个灾难性的事件。

    早期的爬虫架构

    二、现在的爬虫架构方式

    我们把主题、创建主题的用户与爬虫采集数据的任务、主题任务装饰拆分开来,与爬虫相关的包括任务表、全量数据表和主题任务装饰表,而至于怎么把对应的数据分发给那个主题和那个用户由服务端提供一个接口。

    大致的一个流程为:

    1)用户创建主题,选择数据源,输入装饰条件点击提交。如果这个数据源对应的爬虫url在任务里面不存在时,就会新插入一个任务,并把这个任务ID获取出来保存到主题任务装饰表中。

    2)爬虫根据任务表的url进行数据采集,我们会把任务ID和主题ID放在这个url的后面,在保存数据时会把这个任务ID保存到全量数据表中。

    3)保存数据到全量数据表之后就会调用服务端提供的api,并且带上任务ID和主题ID信息,这个服务端的api会根据这个任务ID和主题ID去全量数据表和主题任务装饰表中获取对应的数据和装饰条件。

    4)根据全量数据表的数据和主题任务装饰表装饰条件填充对应的数据到业务表里面推送给满足条件的用户和主题。

    增加任务-采集数据-推送数据

    最后把最重要的三个表结构写出来。

    1、爬虫任务表

    最主要的是url字段,主要这个url后面带上了task_id和theme_id值,不然我们在根据这个任务url采集数据之后入库到全量数据表时无法把这个task_id和theme_id带过去。

    爬虫任务表

    2、全量数据表,就是所有最原始的数据

    3、主题任务装饰表

    相关文章

      网友评论

        本文标题:爬虫架构|如何设计一款类“即刻”信息订阅推送的爬虫架构(二)

        本文链接:https://www.haomeiwen.com/subject/jubqvxtx.html