Scrapy的内置中间件类型

本文详细介绍了Scrapy框架中的各种内置中间件,包括下载中间件、代理中间件、User-Agent中间件、Cookie中间件等,涵盖了HTTP认证、缓存、压缩、重定向、重试、robots.txt处理以及Ajax爬取等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scrapy中的内置中间件类型

常见中间件

下载中间件 DownloaderStats

保存所有通过的request、response及exception的中间件,通过启用 DOWNLOADER_STATS 来启用该中间件

代理中间件 HttpProxyMiddleware

提供了对request设置HTTP代理的支持,通过在 Request 对象中设置 proxy 元数据来开启代理。

User-Agent中间件 UserAgentMiddleware

用于覆盖spider的默认user agent的中间件,要使得spider能覆盖默认的user agent,其 user_agent 属性必须被设置。

Cookie中间件 CookiesMiddleware

追踪了web server发送的cookie,并在之后的request中发送回去,通过配置COOKIES_ENABLED
COOKIES_DEBUG来启用。

其他中间件

HTTP认证中间件 HttpAuthMiddleware

完成某些使用 Basic access authentication(或者叫HTTP认证)的spider生成的请求的认证过程,通过设置spider的 http_user 及 http_pass 属性。

HTTP缓存中间件 HttpCacheMiddleware

为所有HTTP request及response提供了底层(low-level)缓存支持,其由cache存储后端及cache策略组成。

Scrapy提供了两种HTTP缓存存储后端:

Filesystem storage backend (默认值)

DBM storage backend

HTTP压缩中间件 HttpCompressionMiddleware

提供了对压缩(gzip, deflate)数据的支持,通过设置COMPRESSION_ENABLED启用。

HTTP块数据传输中间件 ChunkedTransferMiddleware

添加了对 chunked transfer encoding 的支持。

下载超时中间件 DownloadTimeoutMiddleware

设置 DOWNLOAD_TIMEOUT 或 spider的 download_timeout 属性指定的request下载超时时间.

默认请求头中间件 DefaultHeadersMiddleware

设置 DEFAULT_REQUEST_HEADERS 指定的默认request header

重定向中间件 RedirectMiddleware

根据response的状态处理重定向的request,通过该中间件的(被重定向的)request的url可以通过 Request.meta 的 redirect_urls 键找到。

重试中间件 RetryMiddleware

爬取进程会收集失败的页面并在最后,spider爬取完所有正常(不失败)的页面后重新调度。 一旦没有更多需要重试的失败页面,该中间件将会发送一个信号(retry_complete), 其他插件可以监听该信号,通过下列设定进行配置 :

RETRY_ENABLED

RETRY_TIMES

RETRY_HTTP_CODES

robots中间件 RobotsTxtMiddleware

过滤所有robots.txt eclusion standard中禁止的request,确认该中间件及 ROBOTSTXT_OBEY 设置被启用以确保Scrapy尊重robots.txt。

Ajax爬取中间件

根据meta-fragment html标签查找 ‘AJAX可爬取’ 页面的中间件,通过设置AJAXCRAWL_ENABLED启用。

元数据刷新中间件 MetaRefreshMiddleware

根据meta-refresh html标签处理request重定向,通过以下设定进行配置:

METAREFRESH_ENABLED

METAREFRESH_MAXDELAY

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值