แนบพร็อกซีกับคำขอรูปภาพของ Scrapy
ตกแต่ง Requests ที่ ImagesPipeline สร้าง เพื่อให้การดาวน์โหลดรูปภาพได้รับพร็อกซีโดยไม่ต้องสร้างตรรกะคำขอของไปป์ไลน์ใหม่
from scrapy.pipelines.images import ImagesPipeline
class ProxiedImagesPipeline(ImagesPipeline):
def get_media_requests(self, item, info):
for request in super().get_media_requests(item, info):
request.meta['proxy'] = 'http://proxy.example:8080'
yield request
สำหรับ Scrapy 2.13.3 ให้แทนที่รายการ ImagesPipeline มาตรฐานใน ITEM_PIPELINES ด้วยเส้นทาง import ของคลาสย่อยนี้ คง IMAGES_STORE และการตั้งค่าอื่นๆ ไว้
การเรียกคลาสแม่จะรักษาฟิลด์ URL รูปภาพและ callback ที่ตั้งค่าไว้ คลาสย่อยเพิ่มเฉพาะเส้นทางคำขอ ซึ่ง HttpProxyMiddleware ที่เปิดใช้งานจะใช้ URL รูปภาพแต่ละรายการยังคงเป็นปลายทางของมัน คำขอรูปภาพสาธารณะใหม่ที่ไม่มีข้อมูลรับรองพร็อกซีสามารถใช้รายการจาก รายการพร็อกซี HTTP เมื่อได้รับอนุญาตเส้นทางนั้น
คำขอหน้าเว็บมีนโยบายของตัวเอง ด้วยสภาพแวดล้อมพร็อกซีทั่วโลก meta={'proxy': None} ทำให้คำขอหน้าที่เลือกเป็นแบบตรงในรุ่นนี้
ตรวจสอบว่ามีการออกการดาวน์โหลดจริง การชนแคชของไปป์ไลน์อาจหลีกเลี่ยงคำขอเครือข่าย สำหรับการถ่ายโอนใหม่ ให้เปรียบเทียบรายการผลลัพธ์รูปภาพที่เสร็จแล้วกับ URL ที่ร้องขอ การดำเนินการที่สำเร็จจะปรากฏที่นั่น ขณะที่ความล้มเหลวอาจทิ้งฟิลด์ URL รูปภาพเดิมไว้เต็ม ติดตามผลลัพธ์ที่หายไปผ่านบันทึกของตัวดาวน์โหลดและพร็อกซีที่เลือก