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

Per a Scrapy 2.13.3, substitueix l'entrada estàndard d'ImagesPipeline a ITEM_PIPELINES per la ruta d'importació d'aquesta subclasse. Conserva IMAGES_STORE i la resta de paràmetres.

Cridar la classe pare preserva el camp d'URL d'imatge i les devolucions de trucada configurats. La subclasse només afegeix la ruta de sol·licitud, que consumeix HttpProxyMiddleware activat. Cada URL d'imatge continua sent la seva destinació. Les sol·licituds noves d'imatges públiques sense credencials de proxy poden fer servir una entrada de la llista de proxys HTTP quan aquesta ruta està permesa.

Les sol·licituds de pàgina mantenen la seva pròpia política. Amb un entorn de proxy global, meta={'proxy': None} fa directa una sol·licitud de pàgina seleccionada en aquesta versió.

Comprova que la baixada s'hagi emès realment. Un encert de la memòria cau del pipeline pot evitar una sol·licitud de xarxa. Per a transferències noves, compara les entrades de resultat d'imatge completada amb les URL sol·licitades: les operacions correctes hi apareixen, mentre que els errors poden deixar el camp d'URL d'imatge original emplenat. Rastreja els resultats que falten pels registres del baixador i el proxy triat.

Articles relacionats