打造一个轻量级企业基本信息采集框架(一)

前言

好久没有系统性的写一篇博文了。爬虫工作也进行了快两年了,从简单的requests、xpath解析到js逆向、app反编译、验证码识别等多多少少都经历一些。一个爬虫项目可能由上面一个或者多组成。今天这个spider用scrapy写,明天那个spider用multiprocessing,后天那个爬虫用threading写等等。我们都在尽量的把自己所学应用在各种各样的爬虫当中。这些可能都是一些小项目,几万的数据采集量。有没有想过自己做一个可配置的爬虫框架,虽然我们做不到scrapy那么宏大的项目,但是自己亲自去写个小型的爬虫框架还是可以滴。
前面铺垫了那么多(虽然有点扯),终于轮到这次的重点了。根据关键词模糊搜索企业名称,大规模采集企业基本信息的小型框架设计(这个名字有点绕_._)。在这一系列我会一步步的从零开始搭建这个框架,包括设计思路,代码编写以及最后的分布式部署。

准备

首先我们的python环境是python 3.6,要采集的网站是国家信用momo网(app端),idel是pycharm。用的存储主要是redis+mysql,用到的请求库是requests和aiohttp,中间会有可能用到多进程,用到的异步web框架是sanic。整个用到的库还是挺简单的(所以叫轻量级)。

架构图

打造一个轻量级企业基本信息采集框架(一)_第1张图片
没怎么画过架构图,但是大概的设计都体现了。大概意思就是我们新录入一批关键词,初步设计可以通过mysql录入进来也可以通过自己手动添加进来。然后就是用redis的zset集合给每一个keywords打上标签,0代表未采集,1代表采集成功,2代表采集失败。通过调度器将keywords传入到采集下载器去请求网页,将成功获取到企业的keywords标注为1,失败为2,然后将成功请求获取到的企业名称传到分词脚本那进行分词加入到zset集合当中,获取到的企业基本信息传到存储器,录入mysql。图上面没加上的还有就是也可通过sanicweb框架进行调度,相当于是写个aip,每次都从api get请求中获取关键词,然后通过post请求将下载器中成功请求的企业数据返回到存储器,这样也可以实现一个流程(这个流程较简单,就不介绍了)。下一篇文章将介绍如何编写数据库部分,敬请期待。
打造一个轻量级企业基本信息采集框架(一)_第2张图片
打造一个轻量级企业基本信息采集框架(二)
github

你可能感兴趣的:(python爬虫)