Scrapy แสดงการเปลี่ยนเส้นทางได้ก่อนที่จะตามไป
เปิดเผยสถานะการเปลี่ยนเส้นทางเริ่มต้นและ Location ของ GET ผ่านพร็อกซีชั่วคราวผ่านเมตาดาต้าของคำขอ โดยแยกการจัดการการเปลี่ยนเส้นทางออกจากการกรองข้อผิดพลาด 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 อนุญาตให้สถานะที่ระบุไปถึง callback แทนที่จะถูกปฏิเสธโดยการกรองข้อผิดพลาด HTTP การตั้งค่าเหล่านี้เกี่ยวข้องกับความรับผิดชอบที่แตกต่างกันของมิดเดิลแวร์
ตรวจสอบว่าการเปลี่ยนเส้นทางเลือกอะไร: URL มาตรฐานที่ตั้งใจ สคีมาหรือชื่อโฮสต์อื่น หน้าเข้าสู่ระบบ หรือวงจรที่เกิดซ้ำ 302 ที่ได้รับหลังการขนส่งสำเร็จเป็นการสังเกตที่แตกต่างจากการเปิดการเชื่อมต่อพร็อกซีไม่สำเร็จ
เมื่อการจัดการการเปลี่ยนเส้นทางตามปกติกลับคืนมา Scrapy จะเปิดเผย redirect_urls และ redirect_reasons ในเมตาดาต้าของคำขอของการตอบสนอง สิ่งเหล่านี้สามารถรักษาเส้นทางไปยังผลลัพธ์สุดท้ายโดยไม่ต้องปิดการเปลี่ยนเส้นทางตลอดการรวบรวมข้อมูลทั้งหมด
การตอบสนองสุดท้ายไม่ใช่หน้าที่แอปพลิเคชันตั้งใจโดยอัตโนมัติ เก็บปลายทางและเนื้อหาของการตอบสนองไว้พร้อมกับการวินิจฉัยเส้นทาง