Python爬虫理论 | (8) Scrapy框架

目录

 

1. Scrapy框架

2. Scrapy入门实例

3. Scrapy详解

4. Scrapy对接Selenium

5. 实战


1. Scrapy框架

在python爬虫中:requests  +  selenium  可以解决目前90%的爬虫需求。

scrapy框架是为了让爬虫更强大、更高效。它是一个为了爬取网站数据,提取结构性数据而编写的应用框架,只需要实现少量代码,就能够快速的抓取到数据。

  • 简介

Scrapy 是一个基于Twisted (用Python实现的基于事件驱动的网络引擎框架)的异步处理框架,是纯Python 实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求,只需要定制开发几个模块就可以轻松实现一个爬虫。

  • 组成

 

Scrapy Engine 引擎(框架核心)

处理整个系统的数据流, 触发事务。

Spiders 蜘蛛

定义爬取逻辑和网页的解析规则, 主要负责解析响应并生成提取结果和新的请求。

Scheduler 调度器

接受引擎发过来的请求并将其加入队列中, 在引擎再次请求的时候将请求提供给引擎。

Downloader 下载器

下载网页内容, 并将网页内容返回给蜘蛛。

Item Pipeline 项目管道

负责处理由蜘蛛从网页中抽取的项目,主要任务是清洗、验证和存储数据。

Item 项目

定义爬取结果的数据结构,爬取的数据会被赋值成该Item 对象。

  • 中间件

Downloader Middlewares 下载器中间件

位于引擎和下载器之间的框架,主要处理引擎与下载器之间的请求及响应。

Spider Middlewares 蜘蛛中间件

介于引擎和蜘蛛之间的框架,主要处理输入蜘蛛的响应和输出的结果及新的请求。

Scheduler Middewares 调度中间件

介于引擎和调度之间的中间件,从引擎发送到调度的请求和响应。

 

  • Spider Middlewares 蜘蛛中间件

当Downloader 生成Response 之后, Response 会被发送给Spider ,在发送给Spider 之前, Response会首先经过Spider Middleware 处理,当Spider 处理生成Item 和 Request 之后, Item 和 Request 还会经过Spider Middleware 的处理。

作用:

1)在Downloader 生成的Response 发送给Spider 之前,也就是在Response 发送给Spider之前对Response 进行处理。

2)在Spider 生成的Request 发送给Scheduler 之前,也就是在Request 发送给Scheduler之前对Request 进行处理。

3)在Spider 生成的Item 发送给Item Pipeline 之前,也就是在Item 发送给Item Pipeline之前对Item 进行处理。

Scrapy 已经提供了许多Spider Middleware ,它们被SPIDER_MIDDLEWARES_BASE变量所定义。若有自定义的Spider Middleware,首先加入到SPIDER_MIDDLEWARES 设置中, 该设置会和SPIDER_MIDDLEWARES_BASE 定义的Spider Middleware 合并。然后根据键值的数字优先级排序,得到一个有序列表。第一个Middleware 是最靠近引擎的,最后一个Middleware 是最靠近Spider 的。

  • 流程

 

(1) Engine 首先打开一个网站,找到处理该网站的Spider,并向该Spider 请求第一个要爬取的URL 。

(2) Engine 从Spider 中获取到第一个要爬取的URL ,并通过Scheduler 以request 的形式调度。

(3) Engine 向Scheduler 请求下一个要爬取的URL 。

(4) Scheduler 返回下一个要爬取的URL 给Engine , Engine 将URL 通过Downloader Middlewares 转发给Downloader 下载。

(5)一旦页面下载完毕, Downloader 生成该页面的Response ,并将其通过Downloader Middlewares发送给Engine 。

(6) Engine 从下载器中接收到Response ,并将其通过Spider Middlewares 发送给Spider 处理。

(7) Spider 处理Response ,并返回爬取到的Item 及新的Request 给Engine 。

(8) Engine 将Spider 返回的Item 给Item Pipeline ,将新的Request 给Scheduler 。

(9) 重复第(2)步到第(8)步,直到Scheduler 中没有更多的Request , Engine 关闭该网站,爬取结束。

  • 自动化处理

 

2. Scrapy入门实例

  • 安装

1)安装 lxml

2)安装 pyOpenSSL

3)安装 Twisted

4)安装 pyWin32

5)安装 scrapy

pip install scrapy

  • 入门实例

(1)创建scrapy项目(命令行方式)

首先在命令行进入PyCharm的项目目录,然后执

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值