Knyt proxyen til Scrapys billedanmodninger
Dekorer de Requests, som ImagesPipeline opretter, så billeddownloads får en proxy uden at genopbygge pipelinens anmodningslogik.
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
For Scrapy 2.13.3 skal du erstatte standardposten ImagesPipeline i ITEM_PIPELINES med denne underklasses importsti. Behold IMAGES_STORE og andre indstillinger.
Kald af forælderen bevarer det konfigurerede billed-URL-felt og callbacks. Underklassen tilføjer kun anmodningsruten, som den aktiverede HttpProxyMiddleware forbruger. Hver billed-URL forbliver sin destination. Nye offentlige billedanmodninger uden proxy-legitimationsoplysninger kan bruge en post fra HTTP-proxylisten, når ruten er tilladt.
Sideanmodninger beholder deres egen politik. Med et globalt proxy-miljø gør meta={'proxy': None} en valgt sideanmodning direkte i denne udgivelse.
Kontroller, at en download faktisk blev sendt. Et cachehit i pipelinen kan undgå en netværksanmodning. For nye overførsler skal du sammenligne resultatposterne for færdige billeder med de anmodede URL'er: vellykkede handlinger vises der, mens fejl kan efterlade det oprindelige billed-URL-felt udfyldt. Spor manglende resultater via downloaderlogfiler og den valgte proxy.