Прикачете го проксито на барањата за слики на Scrapy
Украсете ги Requests што ги создава ImagesPipeline за преземањата на слики да добијат прокси без да се преизгради логиката на барањата на pipeline-от.
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, заменете го стандардниот запис ImagesPipeline во ITEM_PIPELINES со патеката за импорт на оваа поткласа. Задржете ги IMAGES_STORE и другите поставки.
Повикот на родителот ги зачувува конфигурираното поле за URL на сликата и повратните повици. Поткласата додава само маршрута на барањето, која ја користи овозможениот HttpProxyMiddleware. Секој URL на слика останува неговата дестинација. Новите барања за јавни слики без акредитиви за прокси можат да користат запис од списокот со HTTP прокси кога таа маршрута е дозволена.
Барањата за страници ја задржуваат сопствената политика. Со глобална прокси околина, meta={'proxy': None} го прави избраното барање за страница директно во ова издание.
Проверете дали преземањето навистина е издадено. Погодување во кешот на pipeline-от може да избегне мрежно барање. За нови преноси, споредете ги записите со резултати од завршени слики со бараните URL: успешните операции се појавуваат таму, додека неуспесите можат да го остават оригиналното поле за URL на сликата пополнето. Следете ги резултатите што недостасуваат преку дневниците на преземачот и избраното прокси.