我使用 Crawlera 作为 IP 轮换服务来抓取一个特定的网站,该网站快速禁止我的 IP,但我只有十几个网站中的一个有这个问题。
由于可以为 Scrapy 项目注册多个中间件,我想知道是否可以定义下载器中间件以使用 PER REQUEST。
所以我只能将我的 Crawlera 配额用于有问题的网站,而不是用于我的所有请求。
一种可能的解决方案 - 使用custom_settings
蜘蛛属性(并CrawleraMiddleware
从项目设置中删除
(假设您每 1 个网站有 1 个蜘蛛并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
属性中定义的蜘蛛中使用。