Проміжне програмне забезпечення проксі в Scrapy: значення, які повертають Request і None
Поверніть керування після призначення проксі в Scrapy, замість того щоб ненавмисно знову запланувати той самий запит до його завантаження.
Адреса проксі змінюється в журналі. Пункт призначення ніколи не з'являється в журналі доступу проксі. Перевірте, чи пропускає ваше проміжне програмне забезпечення запит до завантажувача взагалі.
У проміжному програмному забезпеченні завантажувача Scrapy повернення Request означає повторне планування цього запиту. Це не означає «продовжуйте надсилати цей об'єкт з метаданими, які я щойно змінив».
Для селектора, який вибирає лише маршрут, важлива форма така:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
Цей фрагмент показує поточну форму перехоплювача; використовуйте інтерфейс проміжного програмного забезпечення, який підтримує встановлений випуск Scrapy. Селектор має повернути допустиму кінцеву точку й явно обробити недоступний пул. Публічне обходження, яке дозволяє публічних посередників, може брати HTTP-кандидатів зі списку HTTP-проксі для цього поверненого значення.
Повернення None дозволяє решті проміжного програмного забезпечення запитів і завантажувачу продовжити. Повернення іншого Request корисне, коли ви навмисно замінюєте або повторюєте роботу, але потребує причини й умови виходу.
Ротатор, який щоразу повертає той самий запит, може багаторазово запускати власний код вибору, так і не встановивши з'єднання з пунктом призначення. Збільшення тайм-аутів або відкриття додаткових портів проксі не виправить цей цикл керування.
Досліджуйте вхід у проміжне програмне забезпечення, поведінку під час повернення й першу реальну мережеву спробу як окремі події. Рядок журналу «проксі вибрано» доводить лише те, що селектор спрацював. Він не доводить, що було надіслано запит із вибраною кінцевою точкою.