2024-04-29 20:07:44 发布
网友
我使用Crawlera作为IP轮换服务来抓取一个特定的网站,该网站很快就会禁止我的IP,但我只有一个网站存在这个问题
由于可以为一个Scrapy项目注册多个中间件,我想知道是否可以定义每个请求使用的下载器中间件
因此,我可以将Crawlera的配额仅用于有问题的网站,而不是用于我的所有请求
可能的解决方案之一是使用^{}蜘蛛属性(并从项目设置中删除CrawleraMiddleware)(假设每个网站有一个蜘蛛,并且在项目设置中启用了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中使用
custom_settings
可能的解决方案之一是使用^{} 蜘蛛属性(并从项目设置中删除
CrawleraMiddleware
)(假设每个网站有一个蜘蛛,并且在项目设置中启用了CrawleraMiddleware
):在这种情况下
CrawleraMiddleware
将仅在其custom_settings
属性中定义的spider中使用相关问题 更多 >
编程相关推荐