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 талаасын толук калтырышы мүмкүн. Жоголгон жыйынтыктарды жүктөгүчтүн журналдары жана тандалган прокси аркылуу көзөмөлдөңүз.

Тектеш макалалар