每个请求使用特定的Scrapy downloader中间件

2024-04-29 20:07:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Crawlera作为IP轮换服务来抓取一个特定的网站,该网站很快就会禁止我的IP,但我只有一个网站存在这个问题

由于可以为一个Scrapy项目注册多个中间件,我想知道是否可以定义每个请求使用的下载器中间件

因此,我可以将Crawlera的配额仅用于有问题的网站,而不是用于我的所有请求


Tags: 中间件项目ip定义网站scrapy配额crawlera
1条回答
网友
1楼 · 发布于 2024-04-29 20:07:44

可能的解决方案之一是使用^{}蜘蛛属性(并从项目设置中删除CrawleraMiddleware)(假设每个网站有一个蜘蛛,并且在项目设置中启用了CrawleraMiddleware):

class ProblemSpider(scrapy.spider):

    custom_settings = {
        'DOWNLOADER_MIDDLEWARES' : {'scrapy_crawlera.CrawleraMiddleware': 610},
        'CRAWLERA_ENABLED' : True,
        'CRAWLERA_APIKEY' : '<API key>'}

    def parse(self, response):
....

在这种情况下CrawleraMiddleware将仅在其custom_settings属性中定义的spider中使用

相关问题 更多 >