Scrapy proxy middleware: návratové hodnoty Request a None
Po přiřazení proxy ve Scrapy vraťte řízení, místo abyste neúmyslně znovu naplánovali tentýž požadavek před jeho stažením.
Adresa proxy se v protokolu mění. Cíl se nikdy neobjeví v přístupovém protokolu proxy. Zkontrolujte, zda váš middleware vůbec pustí požadavek ke stahovači.
V middleware stahovače ve Scrapy vrácení Request znamená znovu naplánovat tento požadavek. Neznamená to „pokračujte v odesílání tohoto objektu s metadaty, která jsem právě změnil“.
Pro selektor, který jen vybírá trasu, je důležitý tento tvar:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
Tento úryvek ukazuje současný tvar háku; použijte rozhraní middleware, které podporuje nainstalované vydání Scrapy. Selektor musí vrátit platný koncový bod a explicitně ošetřit nedostupný fond. Veřejné procházení, které povoluje veřejné prostředníky, může pro tuto návratovou hodnotu čerpat HTTP kandidáty ze seznamu HTTP proxy.
Vrácení None umožní zbytku middleware požadavku a stahovači pokračovat. Vrácení jiného Request je užitečné, když práci záměrně nahrazujete nebo opakujete, ale potřebuje důvod a podmínku ukončení.
Rotátor, který pokaždé vrací stejný požadavek, může opakovaně spouštět svůj vlastní kód výběru, aniž by kdy navázal spojení s cílem. Zvyšování časových limitů nebo otevírání dalších proxy portů tuto smyčku řízení toku neopraví.
Zkoumejte vstup do middleware, chování při vrácení a první skutečný síťový pokus jako samostatné události. Řádek protokolu „vybrána proxy“ dokazuje jen to, že selektor běžel. Nedokazuje, že byl odeslán požadavek s vybraným koncovým bodem.