架构之路PythonAmazing Arch

自研文章爬取系统方案设计

2018-11-30  本文已影响1人  caison

1 系统设计分析

1.1 需求介绍

目前已有社区内容系统的文章数据较少,文章质量普遍较低,为了丰富文章内容,增加用户粘性,需要想办法从其他地方爬取文章数据,丰富社区内容系统的文章。为此,需要设计一个文章内容爬取系统,负责爬取、清洗、保存文章。

1.2 系统复杂度分析

整个系统的复杂度分析如下:

优先重点考虑

相对重点考虑

2 架构设计

2.1 整体架构设计

系统整体架构设计

整体分为数据抽取层、数据中间存储层、数据转换存储层3层,实现数据抽取,转换,存储一系列操作,通过分层结构解耦各层的联系,方便系统后续扩展。

比如后续想再新增xx网站的爬虫,其他地方不用修改,只需新增爬虫模块即可。
或者后续业务库表发生变更,其他模块不用修改,只需要修改文章数据转换审核系统。

2.2 数据抽取层——爬虫模块设计

数据抽取层由具体对接各个不同数据源的爬虫组成,这些爬虫负责从数据源爬取定时数据,做简单数据处理后把数据保存到中间存储层。模块基本设计如下:

爬虫模块设计

整个模块基于Python3的Scrapy框架,主要由3个基本对象组成:

实际开发去重方案可以根据实际情况灵活调整优化,如果知道内容已经爬取过,可以灵活制定策略避免重复爬取。

2.3 数据中间存储层设计

负责临时存储文章数据,保存文章最基本数据,包括标题,内容等信息。存储备选方案:

2.4 数据存储转换层设计

负责从中间存储层读取数据,然后进行数据报文转换,例如加文章封面图,待运营人员审核通过后把文章写入文章业务库表。基本设计如下:

数据转换审核系统

3 总结

整个系统架构设计遵循如下原则:

架构设计的目的在于解决系统复杂度问题,真正优秀的架构都是企业当前人力、条件、业务等各种约束下设计出来的,能够合理地将资源整合在一起并发挥出最大功效、并且能够快速落地。

参考

小白进阶之Scrapy第一篇
scrapy入门教程

上一篇下一篇

猜你喜欢

热点阅读