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