Python编程基础(5) Scrapy爬虫框架

通过前面四章的学习,我们可以使用Requests库、美汤库和Re库来编写基本的Python爬虫程序。那么本章将学习一个专业的网络爬虫框架——Scrapy。对,是框架,不是前面介绍的那种函数库。

Scrapy是一个快速而强大的网络爬虫框架。

可能你对框架不是很了解。爬虫框架实际上是实现爬虫功能的软件结构和功能组件的集合。

简而言之,Scrapy是一个爬虫程序的半成品,可以帮助用户实现专业的网络爬虫。

使用Scrapy框架,你不需要写很多代码。Scrapy做了大部分工作,让你调用几个代码自动生成一个爬虫程序,可以节省很多时间。

当然,框架生成的代码基本是一样的。如果遇到一些特定的爬虫任务,不如使用请求库方便。

PyCharm装置

测试安装:

出现框架版本,表示安装成功。

掌握Scrapy爬虫框架结构是用好Scrapy最重要的!

首先以上:

整个结构可以简单概括为“5+2”结构和三个数据流。

5个主要模块(和功能):

(1)控制所有模块之间的数据流。

(2)事件可以根据条件触发。

(1)按要求下载网页。

(1)调度和管理所有爬网请求。

(1)解析下载程序返回的响应。

(2)生成一个爬行项目——scraped item。

(3)生成一个额外的爬行请求- request。

(1)管道蜘蛛产生的爬行。

(2)它由一组操作序列组成,类似于一个管道,每个操作都是一个项目管道类型。

(3)清理、检查和重新抓取项目中的HTML数据,并将数据存储在数据库中。

2个中间键:

(1)引擎、调度程序和下载器之间的用户可配置控制。

(2)修改、丢弃或添加请求或响应。

(1)重新处理请求和爬网。

(2)修改、丢弃、添加请求或爬行项目。

3个数据流:

(1):图中数字为1-2。

1:引擎从Spider - request获取爬网请求。

2.引擎将爬行请求转发给调度程序进行调度。

(2):图中数字3-4-5-6。

3:引擎从调度程序获取下一个爬网请求。

4.引擎通过中间件向下载器发送爬行请求。

5.下载器抓取网页后,形成一个response - response,通过中间件发送给引擎。

6:引擎将收到的响应通过中间件发送给Spider进行处理。

(3):图中的数字7-8-9

7.Spider处理响应并生成一个爬行项目-抓取的项目。

8:引擎将已爬网项目发送到项目管道。

9:引擎向调度程序发送爬网请求。

任务处理流程:爬行从蜘蛛的初始爬行请求开始,引擎控制各个模块的数据流,不断从调度器获取爬行请求,直到请求为空,最后在数据存储到项目管道时结束。

作为用户,只需要配置Scrapy框架的Spider和Item管道,也就是数据流的入口和出口,就可以完成一个爬虫程序的构建。Scrapy提供了简单的爬虫命令语句,帮助用户一键配置剩下的文件,所以我们来看看一些有用的命令。

Scrapy使用命令行来创建和运行爬虫。

PyCharm打开终端并启动Scrapy:

Scrapy基本命令行格式:

具体的常用命令如下:

让我们用一个例子来学习命令的用法:

1.创建一个Scrapy爬虫项目,并在已启动的Scrapy中继续输入:

执行这个命令,系统会自动在PyCharm的项目文件中创建一个项目,命名为pythonDemo。

2.生成一个刺儿头爬虫,以教育部网站为例:

该命令生成一个名为demo的蜘蛛,并在蜘蛛目录中生成文件demo.py。

该命令仅用于生成demo.py文件,该文件也可以手动生成。

查看demo.py文件:

3.配置生成的爬行器,它是demo.py文件:

4.运行爬虫程序并抓取网页:

如果爬取成功,我们会发现pythonDemo下还有一个附加文件t 20210816 _ 551472 . html,我们爬取的网页内容已经写入这个文件。

这就是Scrapy框架的简单用法。

Request对象代表一个HTTP请求,由Spider生成,由Downloader执行。

Response对象表示一个HTTP响应,它由下载器生成,由蜘蛛处理。

Item对象表示从HTML页面中提取的信息内容,由Spider生成,由Item管道处理。项目类似于字典类型,可以根据字典类型进行操作。