最近在做一個爬去某奢侈品網站圖片的項目,需要把不同網站上爬取得圖片放在不同的目錄下,而且需要自定義圖片的名稱,圖片下載一般都會用到ImagesPipeline,因此,通過查看源碼,在Python3-scrapy1.5版本下,代碼如下:
pipeline.py中添加如下代碼:
class GoodsImagePipeline(ImagesPipeline):
def get_media_requests(self, item, info): # 下載圖片
index = 0
for image_url in item['goods_image_url']:
index = index+1
yield Request(image_url, meta={'item': item,'index': index}) # 添加meta是爲了下面重命名文件名使用
def file_path(self, request, response=None, info=None):
item = request.meta['item'] # 通過上面的meta傳遞過來item
index = request.meta['index'] # 通過上面的index傳遞過來列表中當前下載圖片的下標
# 圖片文件名
goods_brand_no = item['goods_brand_no'][0]
goods_brand = item['goods_brand'][0]
goods_brand = goods_brand.replace(" ","")
end = request.url.split('/')[-1].split('.')[-1]
image_name = "%s%s%s%s%s%s%s"%(goods_brand,'-',goods_brand_no,'-',str(index),".",end)
# 圖片下載目錄
filename = u'full/{0}/{1}'.format(item['goods_from'],image_name)
return filename
以上代碼,大家可以根據自己的具體需求進行修改,最後謝謝
https://www.cnblogs.com/moon-future/p/5545828.html此篇文章給的思路。