Scrapy ImgsPipeline下载图片使用iterm传参作为图片名称实现

Python Scrapy使用ImgsPipeline下载图片时指定iterm传参作为图片名称

  1. get_media_requests函数中提交请求链接img_url时,使用meta方法附加传参传入title——图片名称,图片名称由前面管道iterm迭代提交上来。
  2. file_path函数中使用requestmeta方法取出参数,得到图片名称。

源码

'''参数说明

: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  # 返回给下一个即将被执行的管道类

猜你喜欢

转载自blog.csdn.net/weixin_43832353/article/details/118963524