Koble proxyen til Scrapys bildeforespørsler
Dekorer Requests som ImagesPipeline oppretter, slik at bilnedlastinger får en proxy uten å bygge opp igjen forespørselslogikken i pipeline-en.
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 erstatter du standard ImagesPipeline-oppføringen i ITEM_PIPELINES med importstien til denne underklassen. Behold IMAGES_STORE og andre innstillinger.
Kall på forelderen bevarer det konfigurerte bilde-URL-feltet og tilbakeringingene. Underklassen legger bare til forespørselsruten, som den aktiverte HttpProxyMiddleware bruker. Hver bilde-URL forblir sin destinasjon. Nye forespørsler om offentlige bilder uten proxy-legitimasjon kan bruke en oppføring fra HTTP-proxylisten når den ruten er tillatt.
Sideforespørsler beholder sin egen policy. Med et globalt proxy-miljø gjør meta={'proxy': None} en valgt sideforespørsel direkte i denne utgivelsen.
Kontroller at en nedlasting faktisk ble sendt. En cachetreff i pipeline-en kan unngå en nettverksforespørsel. For nye overføringer, sammenlign resultatoppføringene for fullførte bilder med de forespurte URL-ene: vellykkede operasjoner vises der, mens feil kan la det opprinnelige bilde-URL-feltet stå fylt. Spor manglende resultater gjennom loggene til nedlasteren og den valgte proxyen.