为了账号安全,请及时绑定邮箱和手机立即绑定

Python:使用scrapy框架的ImagesPipeline下载图片如何保持原文件名呢?

Python:使用scrapy框架的ImagesPipeline下载图片如何保持原文件名呢?

噜噜哒 2019-04-09 20:25:01
仔细看了下scrapy的官方文档关于ImagesPipeline的介绍说明及使用例子:DownloadingItemImages感觉官方文档太过简单。比如:通过在setting.py文件中通过给IMAGES_STORE赋值,就可以指定图片的保存路径。并且默认情况下,文件名是通过对url使用SHA1hash得来的。现在我想以原来的图片名进行保存,不知道该如何做,希望有经验的朋友帮忙指点下~另外求大家帮忙推荐下关于scrapy的相关书籍(中英文都行)
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

修改file_path对原代码侵入太大,如果只是为了修改文件路径的话,可以在item_completed对文件进行重命名。
classNeteaseautoImagePipeline(ImagesPipeline):
defget_media_requests(self,item,info):
forimage_urlinitem['image_urls']:
yieldscrapy.Request(image_url.replace('120x90','800x600'))
defitem_completed(self,results,item,info):
image_paths=[x['path']forok,xinresultsifok]
ifnotimage_paths:
raiseDropItem("Itemcontainsnoimages")
ifitem['jk']:
newname=item['car']+'-'+item['jk']+'-'+item['model']+'.jpg'
else:
newname=item['car']+'-'+item['model']+'.jpg'
os.rename("/neteaseauto/"+image_paths[0],"/neteaseauto/"+newname)
returnitem
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信