Python Scrapy 框架简单介绍
作者:凌冰_ 发布时间:2021-09-18 14:51:48
一、Scrapy是什么
Scrapy 是一个基于 Twisted 的异步处理框架,是纯 Python 实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。
Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
二、Scrapy优点
1、速度快
2、实现大批量爬取
三、Scrapy爬虫框架的架构
(1) Scrapy有五个部分组件组成:
中 > 引擎Scrapy Engine:用来处理整个系统的数据流处理、触发事务,是整个框架的核心
上 > 调度器Scheduler:用来接受引擎发过来的请求并加入队列中,并在引擎再次请求的时候提供给引擎。
左 > 管道item pipeline:负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗、验证和存储数据。
下 > 爬虫器(爬虫组件) Spiders:其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。
Spider Middlewares(Spiders中间件):位于引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛输入的响应和输出的结果及新的请求。
右 > 下载器 Downloader:用于下载网页内容,并将网页内容返回给Spiders爬虫器。
Downloader Middlewares(下载器中间件):位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应。
(2) Scrapy数据流机制:
引擎Scrapy Engine : C位,不用做事,接收任务,分发任务。
爬虫器Spiders :
1.确认目标url,根据这个url构造一个request对象,交给引擎
4.接收了来自引擎的response,进行解析,解析完毕,把结果给引擎
解析结果分为2种
--(1)如果提取出来的是url,就把所有的步骤重头再走一遍
--(2)如果是需要进行保存的数据data调度器Scheduler:
2.接收了来自引擎的request对象,进行一个排序,把排序之后的结果交给引擎(假设有100个request对象,安装调度,安排谁先谁后).下载器Downloader:
3.接收了来自经过了排序之后的引擎的request对象,发送网络请求获取响应对象response,交给引擎.管道item pipeline:
5.接收了来自引擎的数据data,进行保存.
通过多个组件的相互协作、不同组件完成工作的不同、组件很好地支持异步处理,scrapy 最大限度地利用了网络带宽,大大提高了数据爬取和处理的效率。
四、scrapy创建项目
(1) 爬虫项目
scrapy startproject 爬虫项目名
(2) 爬虫任务
1. cd 到项目的根目录
2. scrapy genspider 爬虫任务名称 域的范围.com
(3)运行scrapy爬虫
scrapy crawl 爬虫任务名称
(4) Scrapy创建结构图
各个文件的功能描述如下:
scrapy.cfg:它是 Scrapy 项目的配置文件,其内定义了项目的配置文件路径、部署相关信息等内容。
items.py:它定义 Item 数据结构,所有的 Item 的定义都可以放这里。
pipelines.py:它定义 Item Pipeline 的实现,所有的 Item Pipeline 的实现都可以放这里。
settings.py:它定义项目的全局配置。
middlewares.py:它定义 Spider Middlewares 和 Downloader Middlewares 的实现。
spiders:其内包含一个个 Spider 的实现,每个 Spider 都有一个文件。
来源:https://blog.csdn.net/hlx20080808/article/details/130686171


猜你喜欢
- 在将自定义的网络权重加载到网络中时,报错:AttributeError: 'dict' object has no attr
- WMI是Windows系统的一大利器,Python的win32api库提供了对WMI的支持,安装win32api即可使用 WMI。本例通过W
- 本文实例讲述了Python HTML解析模块HTMLParser用法。分享给大家供大家参考,具体如下:简介先简略介绍一下。实际上,HTMLP
- 安装Scrapy的安装很简单,官方文档也有详细的说明 http://scrapy-chs.readthedocs.io/zh_CN/0.24
- Qt Designer用于像VC++的MFC一样拖放、设计控件PyUIC用于将Qt Designer生成的.ui文件转换成.py文件Qt D
- 事情开始得很简单。MegaWare公司市场部门想要一个新的网站来发布文档,开发团队觉得使用SQL Server 2000数据库作为文档存储仓
- It's well-known.Microsoft SQL Server 7.0增加了一个语句top,可以限制返回的记录数。但是在使
- 本文实例为大家分享了python3音乐播放器的关键代码,供大家参考,具体内容如下from tkinter import *from trac
- Golang的接口是什么在 Golang 中,接口是一种类型,它是由一组方法签名组成的抽象集合。接口定义了对象应该具有的行为,而不关心对象的
- WebSocket的作用WebSock其实在平常使用,我们是时常见到的,用于实时通讯,例如我们常用的实时聊天、服务端向客户端消息推送、也可以
- 已经11月了,不知道还有没有人看华强买瓜。。。要把华强卖瓜做成字符视频,总共分为三步读取视频把每一帧转为字符画把字符画表现出来 读
- MySQL中concat函数 使用方法:CONCAT(str1,str2,…)返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,
- Python中提供了两个关键字用来控制循环语句,分别是break和continuebreak在条件成立时,不会执行循环中的后续代码,并且会停
- UI自动化测试过程中,可能会出现因测试环境不稳定、网络慢等情况,如果不做任何处理的话,会出现无法定位到特定元素而报错,导致自动化测试无法顺利
- 关于python的ssh库操作需要引入一个远程控制的模块——paramiko,可用于对远程服务器进行
- Note: 本解决方案在window10 + anaconda3 +pycharm2020.1.1 + scrapy安装亲测可用问题:安装S
- 本文为大家分享了SQLServer存储过程中事务的使用方法,具体代码如下create proc usp_Stock@GoodsId int,
- 在日常工作中,Python在办公自动化领域应用非常广泛,如批量将多个Excel中的数据进行计算并生成图表,批量将多个Excel按固定格式转换
- 利用requests、BeautifulSoup、xlwings库抓取中国银行外汇牌价首页数据1. 利用requests、Beautiful
- 我使用的是anaconda。我推荐大家使用anaconda,对环境依赖关系处理的比较好。不用浪费太多时间在安装模块上。首先安装pyinsta