Priključite proxy na Scrapyjeve zahtjeve za slikama
Ukrasite Requests koje stvara ImagesPipeline kako bi preuzimanja slika dobila proxy bez ponovne izgradnje logike zahtjeva u pipelineu.
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
Za Scrapy 2.13.3 zamijenite standardni unos ImagesPipeline u ITEM_PIPELINES putanjom uvoza ove potklase. Zadržite IMAGES_STORE i ostale postavke.
Pozivanje roditelja čuva njegovo konfigurisano polje URL-a slike i povratne pozive. Potklasa dodaje samo rutu zahtjeva, koju omogućeni HttpProxyMiddleware troši. Svaki URL slike ostaje njegovo odredište. Novi zahtjevi za javnim slikama bez proxy akreditiva mogu koristiti unos iz liste HTTP proxyja kada je ta ruta dopuštena.
Zahtjevi za stranicama zadržavaju vlastitu politiku. Uz globalno proxy okruženje, meta={'proxy': None} čini odabrani zahtjev za stranicu direktnim u ovom izdanju.
Provjerite je li preuzimanje zaista izdano. Pogodak keša pipelinea može izbjeći mrežni zahtjev. Za nove prijenose uporedite unose rezultata dovršenih slika sa traženim URL-ovima: uspješne operacije pojavljuju se tamo, dok neuspjesi mogu ostaviti originalno polje URL-a slike popunjeno. Pratite nedostajuće rezultate kroz zapise preuzimača i odabrani proxy.