【Scrapy】Scrapy教程12——中间件

中间件这部分算是一个高阶的Scrapy内容,即便不了解这部分也可以使用Scrapy,但是一些特殊情况使用中间件就比较方便处理了,比如修改请求和响应等。
通过之前的工作原理图中,我们了解到Scrapy中有两个中间件,分别是下载器中间件和爬虫中间件,本节将一一讲解如何激活、编写自己的中间件和如何使用内置中间件。

下载器中间件Downloader Middlewares

激活下载器中间件

在 Scrapy 项目的settings.py文件中进行配置,从而激活下载器中间件。具体操作是在DOWNLOADER_MIDDLEWARES字典中添加或修改相应的中间件配置。例如,如果要激活自定义的下载器中间件MyCustomDownloaderMiddleware,假设其路径为myproject.middlewares.MyCustomDownloaderMiddleware,可以这样配置:

DOWNLOADER\_MIDDLEWARES = {

	"myproject.middlewares.MyCustomDownloaderMiddleware": 543,
}

其中,数字543代表中间件的执行顺序,数值越低优先级越高。

编写自己的下载器中间件

编写自定义下载器中间件,需要创建一个 Python 类,并重写一些特定的方法。可以重写方法包括process_requestprocess_responseprocess_exceptionfrom_crawler方法。

  • process_request(self, request, spider)
    • 当每个request通过下载中间件时,该方法被调用
    • 可以返回None,表示继续处理这个请求
    • 可以返回一个scrapy.http.Response,则中间件会返回这个响应对象并跳过下载过程,直接把响应传递给爬虫;
    • 可以返回一个scrapy.http.Request,那么会停止当前请求及后面的中间件,新请求会被重新调度和下载;
    • 或者抛出scrapy.exceptions.IgnoreRequest异常,请求会被丢弃,触发spiderrequest_dropped信号
  • proce
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值