根据北理工网络公开课《Python网络爬虫与信息提取》整理 课程链接:http://open.163.com/movie/2019/5/3/4/MEEMCM1NP_MEF8BVC34.html
一、Scrapy爬虫框架介绍 功能强大的爬虫框架 安装:pip install scrapy 可用命令行执行scrapy -h来测试安装的效果 scrapy 不是一个函数功能库,而是一个爬虫框架 爬虫框架:是实现爬虫功能的一个软件结构和功能组件集合 是一个半成品,能帮助用户实现专业网络爬虫 “5+2”部分: SPIDERS ||| INTERNET ||| MIDDLEWARE || ||| \||/ ITEM PIPELINES ENGINE ---- (MIDDLEWARE) DOWNLOADER SCHEDULER 在这五个模块之间,数据,包括用户提交的网络爬虫请求,以及从网络上获取的相关内容在这几个模块之间相互流动,形成数据流 scrapy框架包含三条主要数据流路径 1、从SPIDERS经过ENGINE到达SCHEDULER,其中ENGINE从SPIDERS获取爬取的用户请求(REQUESTS,简单理解为一个url) SCHEDULER对爬取的请求进行调度 2、从SCHEDULER通过ENGINE到达DOWNLOADER模块,并且数据最终返回到SPIDERS模块 ENGINE从SCHEDULER模块获得下一个要爬取的请求,这个时候的请求是真实的,要去网络上爬取的请求, 然后通过中间件发给DOWNLOADER模块,DOWNLOADER模块拿到这样的请求后,真实的去连接互联网,并且爬取相关的网页 爬取到网页后,将爬取的内容形成一个对象(RESPONSE),最终传回SPIDERS 3、从SPIDERS通过ENGINE到ITEM PIPELINES模块以及SCHEDULER模块 首先SPIDERS处理从DOWNLOADER获得的响应,产生了两个数据类型,一个为爬取项(ITEMS),另一个为新的爬取请求(响应中的连接) ITEMS发给ITEM PIPELINES,REQUESTS发给SCHEDULER 从而为后期的数据处理以及再次启动网络爬虫请求提供了新的数据来源
见图:
ENGINE控制各个路径的数据流,并且从SCHEDULER模块中获取真实的爬取请求
入口在SPIDERS,出口在ITEM PIPELINES
其中ENGINE,SCHEDULER,DOWNLOADER为已有的功能实现,用户不需要去编写
用户需要去编写和配置的是SPIDERS和ITEM PIPELINES
SPIDERS:向整个框架提供URL链接,同时要解析从网页中的获得的内容;
ITEM PIPELINES:负责对提取的信息进行后处理
也将这种代码编写方式称为“配置”
二、Scrapy爬虫框架解析
1、ENGINE:控制所有模块之间的数据流;根据条件触发事件(不需要用户修改)
2、DOWNLOADER:根据请求下载网页(不需要用户修改)
3、SCHEDULER:对所有爬取请求进行调度管理(不需要用户修改)
4、Downloader Middleware(ENGINE和DOWNLOADER之间的中间件):实施ENGINE、SCHEDULER和DOWNLOADER之间进行用户可配置的控制
功能:修改、丢弃、新增请求或响应
用户可编写配置代码
5、SPIDERS:解析DOWNLOADER返回的响应(Response);产生爬取项(scraped item);产生额外的爬取请求(Request)
6、ITEM PIPELINES:
以流水线方式处理SPIDER产生的爬取项;
由一组操作顺序组成,类似流水线,每个操作是一个ITEM PIPELINE类型;
可能操作包括:清理、检验和查重爬取项中的HTNL数据、将数据存储到数据库
7、Spider Midllerware(ENGINE和SPIDERS之间的中间件):对请求和爬取项的再处理
功能:修改、丢弃、新增请求或爬取项