Pričvrstite 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.
Poziv roditelja čuva njegovo konfigurirano 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 vjerodajnica mogu koristiti unos s popisa 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 izravnim u ovom izdanju.
Provjerite je li preuzimanje doista izdano. Pogodak predmemorije pipelinea može izbjeći mrežni zahtjev. Za nove prijenose usporedite unose rezultata dovršenih slika s traženim URL-ovima: uspješne operacije pojavljuju se tamo, dok neuspjesi mogu ostaviti izvorno polje URL-a slike popunjeno. Pratite nedostajuće rezultate kroz zapise preuzimatelja i odabrani proxy.