2012-12-02 28 views
1

我想將下載圖片的文件名從它現在得到的哈希值更改爲圖片alt標籤或類似的東西。在scrapy 0.16中,如何更改通過圖像管道下載的圖像的文件名?

from scrapy.http import Request 
from scrapy.contrib.pipeline.images import ImagesPipeline 
from scrapy.exceptions import DropItem 
from scrapy.http import Request 

class DocosPipeline(object): 
    def process_item(self, item, spider): 
     return item 

class DocosImagesPipeline(ImagesPipeline): 

def get_media_requests(self, item, info): 
    for image_url in item['image_urls']: 
     yield Request(image_url) 

def item_completed(self, results, item, info): 
    image_paths = [x['path'] for ok, x in results if ok] 
    if not image_paths: 
     raise DropItem("Item contains no images") 
    item['image_paths'] = image_paths 
    return item 

我試過重寫image_key類,但我似乎無法得到它的權利。這裏的類:

def image_key(self, url): 
    image_guid = hashlib.sha1(url).hexdigest() 
    return 'full/%s.jpg' % (image_guid) 

我真的堅持在這裏任何幫助將不勝感激。

回答

0

我不知道,你已經把你的image_key類,但下面這段代碼是我

class MyImagesPipeline(ImagesPipeline): 

    #Name download version 
    def image_key(self, url): 
     image_guid = url.split('/')[-1] 
     return 'full/%s' % (image_guid) 

    def get_media_requests(self, item, info): 
工作正常