Koppel de proxy aan Scrapy's afbeeldingsverzoeken
Versier de Requests die ImagesPipeline maakt, zodat afbeeldingsdownloads een proxy krijgen zonder de verzoeklogica van de pipeline opnieuw te bouwen.
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.