相关疑难解决方法(0)

Scrapy图像下载如何使用自定义文件名

对于我的scrapy项目,我目前正在使用ImagesPipeline.下载的图像以其URL 的SHA1哈希值存储为文件名.

如何使用我自己的自定义文件名来存储文件?

如果我的自定义文件名需要包含同一项中的另一个已删除字段,该怎么办?例如,使用item['desc']图像和文件名item['image_url'].如果我理解正确,那将涉及以某种方式访问​​图像管道中的其他项目字段.

任何帮助将不胜感激.

python scrapy

14
推荐指数
4
解决办法
1万
查看次数

Scrapy:使用重命名defualt图像名称自定义Image管道

我正在使用图像管道从不同的网站下载所有图像.

所有图像都已成功下载到我定义的文件夹中,但在保存到硬盘之前,我无法命名所选的下载图像.

这是我的代码

pipelines.py

class jellyImagesPipeline(ImagesPipeline):


def image_key(self, url, item):
    name = item['image_name']
    return 'full/%s.jpg' % (name)


def get_media_requests(self, item, info):
    print'Entered get_media_request'
    for image_url in item['image_urls']:
        yield Request(image_url)
Run Code Online (Sandbox Code Playgroud)

Image_spider.py

 def getImage(self, response):
 item = JellyfishItem()
 item['image_urls']= [response.url]
 item['image_name']= response.meta['image_name']
 return item
Run Code Online (Sandbox Code Playgroud)

我需要在代码中做些哪些更改?

更新1


pipelines.py

class jellyImagesPipeline(ImagesPipeline):

    def image_custom_key(self, response):
        print '\n\n image_custom_key \n\n'
        name = response.meta['image_name'][0]
        img_key = 'full/%s.jpg' % (name)
        print "custom image key:", img_key
        return img_key

    def get_images(self, response, request, info):
        print "\n\n get_images \n\n"
        for key, …
Run Code Online (Sandbox Code Playgroud)

image scrapy python-imaging-library

7
推荐指数
1
解决办法
5706
查看次数

标签 统计

scrapy ×2

image ×1

python ×1

python-imaging-library ×1