Scrapy దానిని అనుసరించే ముందు రీడైరెక్ట్ను చూపగలదు
అభ్యర్థన మెటాడేటా ద్వారా ప్రాక్సీ GET యొక్క ప్రారంభ రీడైరెక్ట్ స్థితి మరియు Location ను తాత్కాలికంగా బయటపెట్టండి, రీడైరెక్ట్ నిర్వహణను HTTP-లోపాల ఫిల్టరింగ్ నుండి వేరుగా ఉంచుతూ.
ప్రాక్సీ GET ఒక సర్వర్ను చేరి ఆపై రీడైరెక్ట్లను అనుసరించవచ్చు, చివరి వైఫల్యం మొదటి ప్రతిస్పందనను కప్పివేసే వరకు. నిర్ధారణ కోసం ఆ ప్రారంభ ప్రతిస్పందనను బయటపెట్టండి:
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],
},
)
ఈ అభ్యర్థనను స్పైడర్ యొక్క ఇప్పటికే ఉన్న start లేదా callback ప్రవాహం ద్వారా షెడ్యూల్ చేయండి. అనుమతించిన పబ్లిక్-పేజీ పరీక్ష కోసం, HTTP ప్రాక్సీ జాబితా అభ్యర్థన యొక్క ప్రాక్సీ URL కోసం అభ్యర్థులను అందిస్తుంది. inspect_redirect ప్రతిస్పందన స్థితి మరియు Location హెడర్ను నమోదు చేయాలి, మళ్లీ గుడ్డిగా అనుసరించకుండా.
dont_redirect ఈ అభ్యర్థన కోసం స్వయంచాలక రీడైరెక్ట్ను ఆపుతుంది. handle_httpstatus_list పేర్కొన్న స్థితులు HTTP-లోపాల ఫిల్టరింగ్ ద్వారా తిరస్కరించబడకుండా callback ను చేరుకోనిస్తుంది. ఈ సెట్టింగ్లు middleware యొక్క విభిన్న బాధ్యతలకు సంబంధించినవి.
రీడైరెక్ట్ ఏమి ఎంచుకుంటుందో తనిఖీ చేయండి: ఉద్దేశించిన కానానికల్ URL, వేరే స్కీమ్ లేదా హోస్ట్నేమ్, లాగిన్ పేజీ, లేదా పునరావృత చక్రం. విజయవంతమైన రవాణా తర్వాత అందుకున్న 302 ప్రాక్సీ కనెక్షన్ తెరవడంలో వైఫల్యం నుండి భిన్నమైన పరిశీలన.
సాధారణ రీడైరెక్ట్ నిర్వహణ పునరుద్ధరించబడినప్పుడు, Scrapy ప్రతిస్పందన యొక్క అభ్యర్థన మెటాడేటాలో redirect_urls మరియు redirect_reasons లను బయటపెడుతుంది. ఇవి మొత్తం క్రాల్ కోసం రీడైరెక్ట్లను నిలిపివేయకుండా తుది ఫలితానికి దారిని సంరక్షించగలవు.
తుది ప్రతిస్పందన స్వయంచాలకంగా అప్లికేషన్ ఉద్దేశించిన పేజీ కాదు. గమ్యాన్ని మరియు ప్రతిస్పందన విషయాన్ని రూటింగ్ నిర్ధారణతో పాటు ఉంచండి.