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.

Súvisiace články