如何在 Scrapy 中使用自定义的 Downloader Middleware 进行 HTTP 请求和响应的处理?

2023-04-17 00:00:00 响应 自定义 求和

在 Scrapy 中使用自定义的 Downloader Middleware 进行 HTTP 请求和响应的处理,具体步骤如下:

1.创建自定义的 Downloader Middleware。可以在项目的 middlewares.py 文件中定义一个类,继承自 scrapy.downloadermiddlewares.DownloaderMiddleware,然后重写相应的方法,如 process_request、process_response 等。

示例代码:

class CustomDownloaderMiddleware(object):
    def process_request(self, request, spider):
        # 在这里对 request 进行处理,如添加请求头或请求参数
        request.headers['User-Agent'] = 'Mozilla/5.0'
        request.meta['proxy'] = 'http://127.0.0.1:8888'
        return None

    def process_response(self, request, response, spider):
        # 在这里对 response 进行处理,如解析 HTML,提取数据等
        if 'pidancode.com' in response.url:
            title = response.css('title::text').get()
            print('title:', title)
        return response

2.将自定义的 Downloader Middleware 加入到 settings.py 中。可以在项目的 settings.py 文件的 DOWNLOADER_MIDDLEWARES 配置项中添加自定义的中间件类名及优先级。

示例代码:

DOWNLOADER_MIDDLEWARES = {
    'myproject.middlewares.CustomDownloaderMiddleware': 543,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, # 禁用默认的 User-Agent 中间件
}

3.运行 Scrapy 爬虫,并观察日志输出,以验证自定义的 Downloader Middleware 是否生效。

示例代码:

scrapy crawl myspider

其中,'myspider' 是自己定义的爬虫名。

以上就是在 Scrapy 中使用自定义的 Downloader Middleware 进行 HTTP 请求和响应的处理的详细步骤和示例代码。

相关文章