Lampirkan proxy ke permintaan gambar Scrapy
Hiasi Requests yang dibuat ImagesPipeline agar unduhan gambar menerima proxy tanpa membangun ulang logika permintaan pipeline.
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
Untuk Scrapy 2.13.3, ganti entri ImagesPipeline standar di ITEM_PIPELINES dengan jalur impor subkelas ini. Pertahankan IMAGES_STORE dan pengaturan lainnya.
Memanggil induk mempertahankan bidang URL gambar dan callback yang dikonfigurasi. Subkelas hanya menambahkan rute permintaan, yang dikonsumsi HttpProxyMiddleware yang diaktifkan. Setiap URL gambar tetap menjadi tujuannya. Permintaan gambar publik baru tanpa kredensial proxy dapat memakai entri dari daftar proxy HTTP bila rute itu diizinkan.
Permintaan halaman mempertahankan kebijakannya sendiri. Dengan lingkungan proxy global, meta={'proxy': None} membuat permintaan halaman terpilih menjadi langsung pada rilis ini.
Periksa apakah unduhan benar-benar terbit. Cache pipeline yang kena dapat menghindari permintaan jaringan. Untuk transfer baru, bandingkan entri hasil gambar selesai dengan URL yang diminta: operasi yang berhasil muncul di sana, sedangkan kegagalan dapat meninggalkan bidang URL gambar asli tetap terisi. Lacak hasil yang hilang melalui log pengunduh dan proxy yang dipilih.