Python编程基础(5) 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管道处理。项目类似于字典类型,可以根据字典类型进行操作。