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

För Scrapy 2.13.3 ersätter du standardposten ImagesPipeline i ITEM_PIPELINES med den här underklassens importväg. Behåll IMAGES_STORE och andra inställningar.

Anropet av föräldern bevarar det konfigurerade bild-URL-fältet och återanropen. Underklassen lägger bara till förfrågningsvägen, som den aktiverade HttpProxyMiddleware använder. Varje bild-URL förblir sin destination. Nya förfrågningar för offentliga bilder utan proxy-uppgifter kan använda en post från HTTP-proxylistan när vägen är tillåten.

Sidförfrågningar behåller sin egen policy. Med en global proxy-miljö gör meta={'proxy': None} en vald sidförfrågan direkt i den här versionen.

Kontrollera att en nedladdning faktiskt skickades. En cacheträff i pipelinen kan undvika en nätverksförfrågan. För nya överföringar, jämför resultatposterna för slutförda bilder med de begärda URL:erna: lyckade åtgärder visas där, medan misslyckanden kan lämna det ursprungliga bild-URL-fältet ifyllt. Spåra saknade resultat via nedladdarens loggar och den valda proxyn.

Relaterade artiklar