Scrapy proxy middleware: návratové hodnoty Request a None
Po priradení proxy v Scrapy vráťte riadenie, namiesto toho, aby ste neúmyselne naplánovali tú istú požiadavku znova pred jej stiahnutím.
Adresa proxy sa v protokole mení. Cieľ sa nikdy neobjaví v prístupovom protokole proxy. Skontrolujte, či váš middleware vôbec prepustí požiadavku k sťahovaču.
V middleware sťahovača Scrapy vrátenie Request znamená nanovo naplánovať túto požiadavku. Neznamená to „pokračujte v odosielaní tohto objektu s metadátami, ktoré som práve zmenil“.
Pre selektor, ktorý len vyberá trasu, je dôležitý tento tvar:
def process_request(self, request):
request.meta['proxy'] = self.choose_proxy()
return None
Tento úryvok ukazuje súčasný tvar háku; použite rozhranie middleware, ktoré podporuje nainštalované vydanie Scrapy. Selektor musí vrátiť platný koncový bod a explicitne ošetriť nedostupný fond. Verejné prehľadávanie, ktoré povoľuje verejných sprostredkovateľov, môže pre túto návratovú hodnotu čerpať HTTP kandidátov zo zoznamu HTTP proxy.
Vrátenie None umožní zvyšku middleware požiadaviek a sťahovaču pokračovať. Vrátenie iného Request je užitočné, keď prácu zámerne nahrádzate alebo opakujete, ale potrebuje dôvod a podmienku ukončenia.
Rotátor, ktorý zakaždým vracia tú istú požiadavku, môže opakovane spúšťať svoj vlastný kód výberu bez toho, aby kedy nadviazal spojenie s cieľom. Zvyšovanie časových limitov alebo otváranie ďalších proxy portov túto slučku riadenia toku neopraví.
Skúmajte vstup do middleware, správanie pri vrátení a prvý skutočný sieťový pokus ako samostatné udalosti. Riadok protokolu „vybraná proxy“ dokazuje len to, že selektor bežal. Nedokazuje, že bola odoslaná požiadavka s vybraným koncovým bodom.