python - 每个请求使用特定的 Scrapy 下载器中间件
问题描述
我使用 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
属性中定义的蜘蛛中使用。
推荐阅读
- python - 如果字段已经填充,有没有办法调用 update_or_create 并且不更新字段?
- php - mysqli_stmt_bind_result() 的参数计数错误
- excel - 导出到 Excel 会导致字符串长度而不是数据长度
- python-3.x - 使用python,如何获取linux上正在运行的服务的名称
- flutter - 如何将普通页面用作对话框 - 颤振
- java - 正确的数据格式和对齐
- arrays - C - 将一维数组设为二维
- python - Python多串口减慢Linux上的USB速度
- firebase - 是否可以使用安全规则仅授予用户访问在 Firestore 中以其 uid 命名的文档的权限?
- javascript - JavaScript Chart.JS - 将图表保持在两行中,而不是将所有内容堆叠成一列