Pripojte proxy k požiadavkám na obrázky v Scrapy
Ozdobte Requests vytvárané ImagesPipeline, aby sťahovanie obrázkov dostalo proxy bez prestavby logiky požiadaviek 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
Pre Scrapy 2.13.3 nahraďte štandardnú položku ImagesPipeline v ITEM_PIPELINES cestou importu tejto podtriedy. Zachovajte IMAGES_STORE a ostatné nastavenia.
Volanie rodiča zachováva nakonfigurované pole URL obrázka a spätné volania. Podtrieda pridáva iba trasu požiadavky, ktorú spotrebúva povolený HttpProxyMiddleware. Každá URL obrázka zostáva jej cieľom. Nové požiadavky na verejné obrázky bez prihlasovacích údajov k proxy môžu použiť položku zo zoznamu HTTP proxy, ak je táto trasa povolená.
Požiadavky na stránky si zachovávajú vlastnú politiku. S globálnym proxy prostredím robí meta={'proxy': None} vybranú požiadavku na stránku v tomto vydaní priamou.
Overte, že sťahovanie skutočne prebehlo. Zásah do cache pipeline môže zabrániť sieťovej požiadavke. Pri nových prenosoch porovnajte položky výsledkov dokončených obrázkov s požadovanými URL: úspešné operácie sa tam objavia, zatiaľ čo zlyhania môžu nechať pôvodné pole URL obrázka vyplnené. Chýbajúce výsledky sledujte v protokoloch sťahovača a vo zvolenom proxy.