Scrapy lahko prikaže preusmeritev, preden ji sledi
Začasno razkrijte začetni status preusmeritve in glavo Location proksiranega GET prek metapodatkov zahteve, pri čemer obdelavo preusmeritev ločite od filtriranja napak HTTP.
Proksiran GET lahko doseže strežnik in nato sledi preusmeritvam, dokler končna napaka ne skrije prvega odgovora. Razkrijte ta začetni odgovor za diagnostiko:
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],
},
)
Načrtujte to zahtevo prek obstoječega toka zagona ali callback pajka. Za dovoljeno preverjanje javne strani seznam proxy strežnikov HTTP ponuja kandidate za proxy URL zahteve. inspect_redirect mora zabeležiti status odgovora in glavo Location, namesto da bi ji znova slepo sledil.
dont_redirect ustavi samodejno preusmerjanje za to zahtevo. handle_httpstatus_list omogoči navedenim statusom, da dosežejo callback, namesto da bi jih filtriranje napak HTTP zavrnilo. Nastavitve se nanašajo na različne odgovornosti middleware.
Preverite, kaj preusmeritev izbere: predvideni kanonični URL, drugo shemo ali ime gostitelja, prijavno stran ali ponavljajoči se cikel. 302, prejet po uspešnem prenosu, je drugačno opažanje kot neuspeh pri odpiranju proxy povezave.
Ko je običajna obdelava preusmeritev obnovljena, Scrapy razkrije redirect_urls in redirect_reasons v metapodatkih zahteve odgovora. Ti lahko ohranijo pot do končnega rezultata, ne da bi preusmeritve ostale onemogočene ves čas pajkanja.
Končni odgovor ni samodejno stran, ki jo je aplikacija nameravala. Ohranite cilj in vsebino odgovora skupaj z diagnostiko usmerjanja.