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

A Scrapy 2.13.3 esetében cserélje le a ITEM_PIPELINES szabványos ImagesPipeline-bejegyzését ennek az alosztálynak az importútvonalára. Tartsa meg a IMAGES_STORE és a többi beállítást.

A szülő hívása megőrzi a beállított kép-URL mezőt és a visszahívásokat. Az alosztály csak a kérési útvonalat adja hozzá, amelyet az engedélyezett HttpProxyMiddleware használ fel. Minden kép-URL a saját célja marad. A proxy hitelesítő adatok nélküli új nyilvános képrekvések használhatnak egy bejegyzést a HTTP proxy listából, ha az az útvonal engedélyezett.

Az oldalkérések megtartják saját szabályzatukat. Globális proxy környezetben a meta={'proxy': None} ebben a kiadásban közvetlenné tesz egy kiválasztott oldalkérést.

Ellenőrizze, hogy a letöltés valóban elindult-e. A pipeline gyorsítótár-találata elkerülhet egy hálózati kérést. Új átviteleknél hasonlítsa össze a befejezett képek eredménybejegyzéseit a kért URL-ekkel: a sikeres műveletek ott jelennek meg, míg a hibák az eredeti kép-URL mezőt kitöltve hagyhatják. A hiányzó eredményeket a letöltő naplóin és a választott proxyn keresztül kövesse.

Kapcsolódó cikkek