对于我的scrapy项目,我目前正在使用ImagesPipeline.下载的图像以其URL 的SHA1哈希值存储为文件名.
如何使用我自己的自定义文件名来存储文件?
如果我的自定义文件名需要包含同一项中的另一个已删除字段,该怎么办?例如,使用item['desc']图像和文件名item['image_url'].如果我理解正确,那将涉及以某种方式访问图像管道中的其他项目字段.
任何帮助将不胜感激.
我正在使用图像管道从不同的网站下载所有图像.
所有图像都已成功下载到我定义的文件夹中,但在保存到硬盘之前,我无法命名所选的下载图像.
这是我的代码
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)