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.

Sorodni članki