Pripnite proxy na Scrapyjeve zahteve za slikami
Okrasite Requests, ki jih ustvarja ImagesPipeline, da bodo prenosi slik dobili proxy brez ponovne gradnje logike zahtev v 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 zamenjajte standardni vnos ImagesPipeline v ITEM_PIPELINES s potjo uvoza tega podrazreda. Ohranite IMAGES_STORE in druge nastavitve.
Klic nadrejenega razreda ohrani nastavljeno polje URL slike in povratne klice. Podrazred doda samo pot zahteve, ki jo porablja omogočen HttpProxyMiddleware. Vsak URL slike ostane njegov cilj. Nove zahteve za javne slike brez proxy poverilnic lahko uporabijo vnos s seznama proxyjev HTTP, ko je ta pot dovoljena.
Zahteve strani ohranijo svojo politiko. V globalnem proxy okolju meta={'proxy': None} v tej izdaji naredi izbrano zahtevo strani neposredno.
Preverite, ali je bil prenos res izdan. Zadetek v predpomnilniku pipelinea se lahko izogne omrežni zahtevi. Pri novih prenosih primerjajte vnose rezultatov dokončanih slik z zahtevanimi URL-ji: uspešne operacije se pojavijo tam, medtem ko lahko neuspehi pustijo prvotno polje URL slike izpolnjeno. Sledite manjkajočim rezultatom v dnevnikih prenašalnika in v izbranem proxyju.