Scrapy ImgsPipeline baixa imagens usando iterm como o nome da imagem

Quando Python Scrapy usa ImgsPipeline para baixar imagens, especifique o parâmetro iterm como o nome da imagem

  1. Ao enviar o link de solicitação img_url na função get_media_requests , use o método meta para adicionar um parâmetro adicional para passar no título — o nome da imagem e o nome da imagem é enviado iterativamente pelo iterm do pipeline anterior.
  2. Na função file_path , use o metamétodo de solicitação para retirar os parâmetros e obter o nome da imagem.

Código fonte

'''参数说明

:item['title']: 向管道提交的图片名称 
:item['img_url']: 向管道提交的图片链接
'''
class ImgsPipeline(ImagesPipeline):
    # 主要重写下面三个父类方法
    def get_media_requests(self, item, info):
        title = item['title'] + '.jpg'
        yield scrapy.Request(item['img_url'], meta={
    
    'title': title})

    def file_path(self, request, response=None, info=None):
        return request.meta['title']  # 返回文件名

    def item_completed(self, results, item, info):
        global count
        print('{} -- 下载完成  第{}张'.format(item['title'], count))
        count += 1

        return item  # 返回给下一个即将被执行的管道类

Acho que você gosta

Origin blog.csdn.net/weixin_43832353/article/details/118963524
Recomendado
Clasificación