一、前情提要
为什么要使用Scrapy 框架?
前两篇深造篇介绍了多线程这个概念和实战
多线程网页爬取
多线程爬取网页项目实战
经过之前的学习,我们基本掌握了分析页面、分析动态请求、抓取内容,也学会使用多线程来并发爬取网页提高效率。这些技能点已经足够我们写出各式各样符合我们要求的爬虫了。
但我们还有一个没解决的问题,那就是工程化。工程化可以让我们写代码的过程从「想一段写一段」中解脱出来,变得有秩序、风格统一、不写重复的东西。
而Scrapy 就是爬虫框架中的佼佼者。它为我们提前想好了很多步骤和要处理的边边角角的问题,而使用者可以专心于处理解析页面、分析请求这种最核心的事情。
二、Scrapy框架的概念
Scrapy 是一个纯 Python 实现的、流行的网络爬虫框架,它使用了一些高级功能来简化网页的抓取,能让我们的爬虫更加的规范、高效。
它可以分为如下几个部分
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20组件 | %20%20%20%20%20%20%20%20%20%20%20%20
功能 | %20%20%20%20%20%20%20%20
%20%20%20%20
%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Scrapy%20Engine | %20%20%20%20%20%20%20%20%20%20%20%20
Scrapy%20引擎,负责控制整个系统的数据流和事件的触发 | %20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20Scheduler | %20%20%20%20%20%20%20%20%20%20%20%20
调度器,接收%20Scrapy%20引擎发来的请求并将其加入队列中,等待引擎后续需要时使用 | %20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20Downloader | %20%20%20%20%20%20%20%20%20%20%20%20
下载器,爬取网页内容,将爬取到的数据返回给%20Spiders(爬虫) | %20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20Spiders | %20%20%20%20%20%20%20%20%20%20%20%20
爬虫,这部分是核心代码,用于解析、提取出需要的数据 | %20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20Item%20Pipeline | %20%20%20%20%20%20%20%20%20%20%20%20
数据管道,处理提取出的数据,主要是数据清洗、验证和数据存储 | %20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20Downloader%20middlewares | %20%20%20%20%20%20%20%20%20%20本文来源gao@daima#com搞(%代@#码@网&%20%20
下载器中间件,处理%20Scrapy%20引擎和下载器之间的请求和响应 | %20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20Spider%20middlewares | %20%20%20%20%20%20%20%20%20%20%20%20
爬虫中间件,处理爬虫输入的响应以及输出结果或新的请求 | %20%20%20%20%20%20%20%20
%20%20%20%20