Scrapy poate afișa redirecționarea înainte de a o urma
Expune temporar starea inițială de redirecționare și antetul Location ale unui GET prin proxy prin metadatele cererii, păstrând tratarea redirecționărilor separată de filtrarea erorilor HTTP.
Un GET prin proxy poate ajunge la un server și apoi poate urma redirecționări până când eșecul final ascunde primul răspuns. Expune acel răspuns inițial pentru diagnosticare:
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],
},
)
Programează această cerere prin fluxul existent de start sau callback al păianjenului. Pentru o verificare permisă a unei pagini publice, lista de proxy HTTP oferă candidați pentru URL-ul de proxy al cererii. inspect_redirect ar trebui să înregistreze starea răspunsului și antetul Location în loc să îl urmeze din nou orbește.
dont_redirect oprește redirecționarea automată pentru această cerere. handle_httpstatus_list permite stărilor numite să ajungă la callback în loc să fie respinse de filtrarea erorilor HTTP. Setările privesc responsabilități diferite ale middleware-ului.
Verifică ce selectează redirecționarea: un URL canonic dorit, o altă schemă sau un alt nume de gazdă, o pagină de autentificare sau un ciclu care se repetă. Un 302 primit după un transport reușit este o observație diferită de eșecul de a deschide conexiunea proxy.
Când tratarea normală a redirecționărilor este restabilită, Scrapy expune redirect_urls și redirect_reasons în metadatele cererii răspunsului. Acestea pot păstra calea către un rezultat final fără a lăsa redirecționările dezactivate pe tot parcursul crawl-ului.
Un răspuns final nu este automat pagina pe care aplicația o intenționa. Păstrează destinația și conținutul răspunsului împreună cu diagnosticul de rutare.