爬虫构架|如何设计一款类“即刻”信息订阅推送的爬虫构架(一)
优采云 发布时间: 2020-05-27 08:02有了前面的业务剖析,接下来我们就可以瞧瞧我们的构架应当怎么样来设计啦。我这儿先给出整体构架图。
分发集群、爬虫集群、装饰集群
3.1 分发集群
分发集群有两个任务:
1. 接收后台恳求,新增内容源,首先判定内容源是否已存在(通过查询“内容源”表)。若不存在,则将内容源作为爬虫任务放置到定时任务池,并主动递交到爬虫队列。
2. 定时从任务池中获取全部任务爬虫框架设计,按类型、按级别(现只定义快慢两级)提交到对应爬虫队列。
注:爬虫队列分级是为了更好的消费任务。
快队列指的是拥有更多的消费者,能更快的完成任务,一般用于处理新任务。
慢队列值得是拥有较少的消费者,完成任务的时间慢,一般用于处理异常任务。
3.2 爬虫集群
爬虫集群也有两个任务:
1. 消费队列中的爬虫任务,抓取如title、desc、url等信息储存入数据库。此时,记录应如实对应内容源的内容,不应进行过滤,封装。
2. 完成一次爬虫任务后,提交到装潢任务队列——提供内容源的一次抓取结果(此处应为多条记录),希望将结果根据每位用户的要求过滤和封装。
3.3 装饰集群
装饰集群也有两个任务:
1. 消费队列中的装潢任务,查询“追踪对象表”和“主题表”,获取多种用户需求。对于每位用户,分别将抓取结果过滤和装潢,最后的封装结果按用户入库。
2. 入库成功后,需要远程调用(rmi)搜索引擎(搜索引擎建索引)、云通信(发送联通通知、邮件通知)、动态流(即刻的消息页,动态流须要将主题新更内容分发到对应关注者的“动态流”表中)。
四、爬虫技术实现
目前我那边追踪机器人使用的技术是python的Scrapy框架,分布式实现用的是scrapy-redis。
欢迎有志之士来我司和我一起实现我们产品中的信息订阅环节的工程,订阅环节是我们产品的基础爬虫框架设计,当然我们的产品远不只是那些。
我希望你有下边的知识点:
1)知道怎样借助IDE(推荐PyCharm)调试scrape爬虫程序
2)熟练使用xpath或css选择器获取页面元素
3)知道怎样使用selenium进行手动登入
4)熟练借助middleware中间件做ip代理池
5)使用scrapy-redis做过分布式爬虫项目
6)熟悉scrape构架图,熟练使用middleware中间件和讯号(Signals)进行扩充开发
7)熟悉各类爬虫、反爬虫攻守策略