Proxied GET može doći do servera i zatim pratiti preusmjeravanja sve dok konačni neuspjeh ne sakrije prvi odgovor. Izložite taj početni odgovor radi dijagnostike:

request = scrapy.Request(
    'https://service.example/page',
    callback=inspect_redirect,
    meta={
        'proxy': 'http://proxy.example:8080',
        'dont_redirect': True,
        'handle_httpstatus_list': [301, 302, 303, 307, 308],
    },
)

Zakažite ovaj zahtjev kroz postojeći tok pokretanja ili callback pauka. Za dozvoljenu provjeru javne stranice lista HTTP proxyja nudi kandidate za proxy URL zahtjeva. inspect_redirect treba zabilježiti status odgovora i zaglavlje Location umjesto da ga ponovo slijepo prati.

dont_redirect zaustavlja automatsko preusmjeravanje za ovaj zahtjev. handle_httpstatus_list omogućava navedenim statusima da dođu do callbacka umjesto da ih filtrira HTTP greška. Postavke se odnose na različite odgovornosti middlewarea.

Provjerite šta preusmjeravanje bira: željeni kanonski URL, drugu šemu ili ime hosta, stranicu za prijavu ili ciklus koji se ponavlja. 302 primljen nakon uspješnog prijenosa različito je zapažanje od neuspjeha otvaranja proxy veze.

Kada se normalno rukovanje preusmjeravanjima vrati, Scrapy izlaže redirect_urls i redirect_reasons u metapodacima zahtjeva odgovora. Oni mogu sačuvati put do konačnog rezultata bez ostavljanja preusmjeravanja onemogućenih tokom cijelog crawla.

Konačni odgovor nije automatski stranica koju je aplikacija namjeravala. Čuvajte odredište i sadržaj odgovora uz dijagnostiku rutiranja.

Povezani članci