深圳自建网站网站区分
中间件这部分算是一个高阶的Scrapy内容,即便不了解这部分也可以使用Scrapy,但是一些特殊情况使用中间件就比较方便处理了,比如修改请求和响应等。
通过之前的工作原理图中,我们了解到Scrapy中有两个中间件,分别是下载器中间件和爬虫中间件,本节将一一讲解如何激活、编写自己的中间件和如何使用内置中间件。
下载器中间件Downloader Middlewares
激活下载器中间件
在 Scrapy 项目的settings.py文件中进行配置,从而激活下载器中间件。具体操作是在DOWNLOADER_MIDDLEWARES字典中添加或修改相应的中间件配置。例如,如果要激活自定义的下载器中间件MyCustomDownloaderMiddleware,假设其路径为myproject.middlewares.MyCustomDownloaderMiddleware,可以这样配置:
DOWNLOADER\_MIDDLEWARES = {"myproject.middlewares.MyCustomDownloaderMiddleware": 543,
}
其中,数字543代表中间件的执行顺序,数值越低优先级越高。
编写自己的下载器中间件
编写自定义下载器中间件,需要创建一个 Python 类,并重写一些特定的方法。可以重写方法包括process_request、process_response、process_exception和from_crawler方法。
process_request(self, request, spider)- 当每个
request通过下载中间件时,该方法被调用 - 可以返回
None,表示继续处理这个请求 - 可以返回一个
scrapy.http.Response,则中间件会返回这个响应对象并跳过下载过程,直接把响应传递给爬虫; - 可以返回一个
scrapy.http.Request,那么会停止当前请求及后面的中间件,新请求会被重新调度和下载; - 或者抛出
scrapy.exceptions.IgnoreRequest异常,请求会被丢弃,触发spider的request_dropped信号 </
- 当每个
