一、scrapy简介
Scrapy 是用纯 Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架, 用途非常广泛
Scrapy 使用了 Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快 我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成 各种需求
(1)、下载scrapy
pip install scrapy
二、scrapy开发流程
1、新建项目
scrapy startproject 项目名
2、新建spider–爬虫模板
先进入项目目录下
命令:scrapy genspider [py文件的名称] [spider爬取的网址]
文件中属性的含义:
3、更改配置-settings.py的两个配置
(1)headers:配置scrapy下载时的请求头
(2)robots协议:
全称:网络爬虫排除标准
作用:robots协议规定了,搜索引擎哪些数据可以爬取,哪些不可以爬取的协议文件
scrapy默认遵循robots协议的
4、运行命令
scrapy crawl spider_name [–nolog]
5、提取数据
参数repsonse有如下内容:
对于一个提取数据的方法,它外部不会提取出两个内容:
-
一个url
-
item
所以在spider组件中的所有的parse方法,将来只能yield出两个内容:
-
一个url
yield scrapy.Requests(
url=url,callback=函数, encoding =编码 )
-
item
yield item
-
6、编写item
item.py结构如下:注意:这些字段必须不能为空
导入使用相对路径
7、数据的保存
当在spider中yiled一个item时候,scrapy会将这个item交给pipelines.py来处理,想要利用上述功能,必须先要配置
(1)配置pipelines
(2)编存储数据的pipelines.py
三、pipelines管道原理
四、scrapy框架图
- Scrapy Engine(引擎): 负责 spider、ItemPipeline、Downloader、Scheduler 中间的通讯, 信号、数据传递等
- Scheduler(调度器): 它负责接受引擎发送过来的 Request 请求,并按照一定的方式进 行整理排列,入队,当引擎需要时,交还给引擎
- Downloader(下载器): 负责下载 Scrapy Engine(引擎)发送的所有 Requests 请求,并将 其获取到的 Responses 交还给 Scrapy Engine(引擎),由引擎交给 spider 来处理
- spider(爬虫): 它负责处理所有 Responses,从中分析提取数据,获取 Item 字段需要 的数据,并将需要跟进的 URL 提交给引擎,再次进入Scheduler(调度器)
- Item Pipeline(管道): 它负责处理 spider 中获取到的 Item,并进行后期处理(详细分析、 过滤、存储等)
- Downloader Middlewares(下载中间件): 你可以当作是一个可以自定义扩展下载功能 的组件
- SpiderMiddlewares(spider中间件): 你可以理解为是一个可以自定义扩展和操作引擎 和 spider 中间通信的功能组件(比如进入 spider 的 Response 和从 spider 出去的 Requests)
五、Scrapy 中间件
简介: 中间件是Scrapy里面的一个核心概念,使用中间件可以在爬虫的请求发起之前或者请求返回之后对数据进行定制化修改,从而开发出适应不同情况的爬虫
分类: 爬虫中间件和下载中间件
1、新建一个py文件
2、在文件新建一个类,这个必须有一个方法