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

Scrapy 2.13.3 үшін ITEM_PIPELINES ішіндегі стандартты ImagesPipeline жазбасын осы ішкі кластың импорт жолымен ауыстырыңыз. IMAGES_STORE және басқа параметрлерді сақтаңыз.

Ата-класты шақыру оның конфигурацияланған сурет-URL өрісін және қайта шақыруларын сақтайды. Ішкі класс тек сұрау бағытын қосады, оны қосылған HttpProxyMiddleware тұтынады. Әрбір сурет URL өзінің межесі болып қалады. Прокси тіркелгі деректері жоқ жаңа жалпыға ашық сурет сұраулары, бұл бағыт рұқсат етілгенде HTTP прокси тізімінен жазбаны пайдалана алады.

Бет сұраулары өз саясатын сақтайды. Жаһандық прокси ортасында meta={'proxy': None} осы шығарылымда таңдалған бет сұрауын тікелей етеді.

Жүктеудің шынымен жіберілгенін тексеріңіз. Конвейер кэшінің соқтығысуы желілік сұраудан құтылдыруы мүмкін. Жаңа тасымалдар үшін аяқталған сурет нәтиже жазбаларын сұралған URL-дермен салыстырыңыз: сәтті операциялар сонда көрінеді, ал сәтсіздіктер бастапқы сурет-URL өрісін толтырылған күйде қалдыруы мүмкін. Жоғалған нәтижелерді жүктеуші журналдары мен таңдалған прокси арқылы бақылаңыз.

Қатысты мақалалар