Adres proxy zmienia się w logu. Cel nigdy nie pojawia się w logu dostępu proxy. Sprawdź, czy Twój middleware w ogóle przepuszcza żądanie do downloadera.

W middleware downloadera Scrapy zwrócenie Request oznacza ponowne zaplanowanie tego żądania. Nie oznacza „kontynuuj wysyłanie tego obiektu z metadanymi, które właśnie zmieniłem”.

Dla selektora, który wybiera tylko trasę, ważny kształt jest taki:

def process_request(self, request):
    request.meta['proxy'] = self.choose_proxy()
    return None

Ten fragment pokazuje obecny kształt hooka; użyj interfejsu middleware obsługiwanego przez zainstalowane wydanie Scrapy. Selektor musi zwrócić prawidłowy punkt końcowy i jawnie obsłużyć niedostępną pulę. Publiczny crawl, który dopuszcza publicznych pośredników, może czerpać kandydatów HTTP z listy proxy HTTP dla tej wartości zwracanej.

Zwrócenie None pozwala reszcie middleware żądań i downloaderowi kontynuować. Zwrócenie innego Request jest przydatne, gdy świadomie zastępujesz lub ponawiasz pracę, ale wymaga powodu i warunku wyjścia.

Rotator, który za każdym razem zwraca to samo żądanie, może wielokrotnie uruchamiać własny kod wyboru, nigdy nie nawiązując połączenia z celem. Zwiększanie limitów czasu lub otwieranie kolejnych portów proxy nie naprawi tej pętli przepływu sterowania.

Badaj wejście do middleware, zachowanie przy zwracaniu i pierwszą rzeczywistą próbę sieciową jako osobne zdarzenia. Wiersz logu „wybrano proxy” dowodzi tylko, że selektor zadziałał. Nie dowodzi, że wysłano żądanie z wybranym punktem końcowym.

Powiązane artykuły