前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫架构|如何设计一款类“即刻”信息订阅推送的爬虫架构(二)

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

作者头像
黄小怪
发布2018-05-21 17:22:13
1.2K0
发布2018-05-21 17:22:13
举报
文章被收录于专栏:小怪聊职场小怪聊职场

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

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

我们之前设计的爬虫任务创建方式为:用户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、主题任务装饰表

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档