Шаг 1: Создайте Proxy Middleware
Сначала создадим middleware, который будет прикреплять учётные данные прокси к каждому запросу.- В вашем проекте Scrapy откройте файл
middlewares.py. - Добавьте следующий класс. Он считывает учётные данные из
settings.pyи легко расширяется для работы с динамическими параметрами.
middlewares.py
Это продвинутое middleware позволяет передавать динамические параметры (например,
-country-de) из паука в middleware с помощью request.meta['proxy_username_params'].Шаг 2: Настройте settings.py
Теперь включим middleware и добавим ваши учётные данные.
- Откройте файл
settings.py. - Добавьте базовые учётные данные прокси.
- Включите
ScrapyCatproxyProxyMiddlewareвDOWNLOADER_MIDDLEWARES.
settings.py
Практический пример: Парсинг спецпредложений Steam
Теперь используем созданное middleware для парсинга всех игр со скидками из магазина Steam. Этот паук стал намного чище, поскольку вся логика прокси находится в middleware.Паук (steam_specials_spider.py)
Обратите внимание, насколько чист этот паук. Он сосредоточен исключительно на логике парсинга и передаче динамических параметров в middleware.
spiders/steam_specials_spider.py
Что демонстрирует этот пример
- Лучшая практика: Паук чист и сфокусирован на том, что парсить. Middleware обрабатывает, как подключиться. Это надёжный и масштабируемый подход.
- Динамическое управление: Паук может легко изменить геолокацию или сессию для любого запроса, просто изменив значение
proxy_username_paramsв словареmeta. - Переиспользование кода:
ScrapyCatproxyProxyMiddlewareтеперь может использоваться всеми пауками в вашем проекте без дублирования кода.