目录
Scrapy英文文档 https://docs.scrapy.org/en/latest
Scrapy1.7中文文档 https://www.osgeo.cn/scrapy/
一 Scrapy 框架介绍
- Scrapy Engine:引擎。负责Scheduler 、Downloader、Spider、ItemPipeline 中间的通讯、信号、数据传递等,是整个框架的核心
- Scheduler:调度器。负责接受Scrapy Engine发送过来的Request请求,并按照一定的方式将其加入队列中,当Scrapy Engine需要时,交还给Scrapy Engine
- Downloader Middlewares:下载器中间件。位于Scrapy Engine和Downloader之间的钩子框架,主要处理Scrapy Engine与Downloader之间的请求及响应。主要功能包括更换代理IP,更换Cookies,更换User-Agent,自动重试等
- Downloader:下载器。负责下载Scrapy Engine发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine,由Scrapy Engine交给Spiders来处理
- Spiders:蜘蛛。它负责从Responses中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给Scrapy Engine,再次进入Scheduler
- Spider Middlewares:蜘蛛中间件。位于Scrapy Engine和Spider之间的钩子框架,主要处理Spider输入的响应和输出的结果及新的请求(比如进入Spider的Responses和从Spider出去的Requests)。一般不用设置
- Item:项目。它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item对象
- Item Pipeline:项目管道。负责处理由Spider从网页中抽取的项目,它的主要任务是清洗、验证和存储数据
- 另,框架是个宝,多看一遍,多Scrapy的理解就多清晰一些
二 Scrapy 的运作流程
- Engine首先找到处理某网站的Spider,并向该Spider请求第一个要爬取的URL
- Engine从Spider中获取到第一个要爬取的URL,并通过Scheduler以Request的形式调度
- Engine向Scheduler请求下一个要爬取的URL
- Scheduler返回下一个要爬取的URL给Engine,Engine将URL通过Downloader Middlewares转发给Downloader下载
- 一旦页面下载完毕,Downloader生成该页面的Response,并将其通过Downloader Middlewares发送给Engine
- Engine从下载器中接收到Response,并将其通过Spider Middlewares发送给Spider处理
- Spider处理Response,并返回爬取到的Item及新的Request给Engine
- Engine将Spider返回的Item给Item Pipeline,将新的Request给Scheduler
- 重复第二步到最后一步,直到Scheduler中没有更多的Request,Engine关闭该网站,爬取结束
三 Pycharm 中创建 Scrapy 项目
1 创建项目
2 安装Scrapy
3 创建scrapy项目
# 打开terminal 输入以下命令
# scrapy startproject 爬虫项目名
scrapy startproject crawlers
4 创建后的目录如下:
crawlers/
├── crawlers/ # p