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

Vervang voor Scrapy 2.13.3 de standaard ImagesPipeline-vermelding in ITEM_PIPELINES door het importpad van deze subklasse. Behoud IMAGES_STORE en andere instellingen.

Het aanroepen van de ouder behoudt het geconfigureerde afbeeldings-URL-veld en de callbacks. De subklasse voegt alleen de verzoekroute toe, die de ingeschakelde HttpProxyMiddleware gebruikt. Elke afbeeldings-URL blijft zijn bestemming. Nieuwe verzoeken voor openbare afbeeldingen zonder proxy-inloggegevens kunnen een vermelding uit de HTTP-proxylijst gebruiken wanneer die route is toegestaan.

Paginoverzoeken houden hun eigen beleid. Met een globale proxy-omgeving maakt meta={'proxy': None} een geselecteerd paginoverzoek direct in deze release.

Controleer of een download daadwerkelijk is uitgevoerd. Een cachetreffer van de pipeline kan een netwerkverzoek vermijden. Vergelijk voor nieuwe overdrachten de resultaatvermeldingen van voltooide afbeeldingen met de opgevraagde URL's: geslaagde bewerkingen verschijnen daar, terwijl fouten het oorspronkelijke afbeeldings-URL-veld gevuld kunnen laten. Volg ontbrekende resultaten via de logs van de downloader en de gekozen proxy.

Gerelateerde artikelen