Я использую scrapy для очистки некоторых веб-страниц. Я написал свой собственный класс ProxyMiddleware, в котором я реализовал свое требование в методе process_request(self,request,spider). Вот мой код (скопировано):
class ProxyMiddleware(scrapy.downloadermiddlewares.httpproxy):
def __init__(self, proxy_ip=''):
self.proxy_ip = proxy_ip
def process_request(self,request,spider):
ip = random.choice(self.proxy_list)
if ip:
request.meta['proxy'] = ip
return request
proxy_list = [list of proxies]
Теперь я не понял, как scrapy будет рассматривать мою реализацию вместо класса по умолчанию. После некоторых поисков и мозгового штурма я понял, что мне нужно внести изменения в settings.py
DOWNLOADER_MIDDLEWARES = {
'IPProxy.middlewares.MyCustomDownloaderMiddleware': 543,
'IPProxy.IPProxy.spiders.RandomProxy': 600
}
Для лучшего понимания читателями структуры моего проекта я добавил в список второй элемент с некоторым случайным значением. Структура моего проекта:
Мой вопрос,
- Как правильно использовать DOWNLOADER_MIDDLEWARES в settings.py
- Как присвоить значения элементам в DOWNLOADER_MIDDLEWARES
- Как сделать, чтобы scrapy вызывал мой индивидуальный код вместо кода по умолчанию