用Python的Scrapy的ImagesPipeline下载gif图片,下载下来的图片是gif格式但都是静态的不会动的,求大神
以下是ImagesPipeline代码:
class ArticleImagePipeline(ImagesPipeline):
def get_media_requests(self, item, info): # 下载图片
for image_url in item['image_url']:
yield Request(image_url, meta={'item': item, 'index': item['image_url'].index(image_url)}) # 添加meta是为了下面重命名文件名使用
def file_path(self, request, response=None, info=None):
## start of deprecation warning block (can be removed in the future)
def _warn():
from scrapy.exceptions import ScrapyDeprecationWarning
import warnings
warnings.warn('ImagesPipeline.image_key(url) and file_key(url) methods are deprecated, '
'please use file_path(request, response=None, info=None) instead',
category=ScrapyDeprecationWarning, stacklevel=1)
# check if called from image_key or file_key with url as first argument
if not isinstance(request, Request):
_warn()
url = request
else:
url = request.url
# detect if file_key() or image_key() methods have been overridden
if not hasattr(self.file_key, '_base'):
_warn()
return self.file_key(url)
elif not hasattr(self.image_key, '_base'):
_warn()
return self.image_key(url)
## end of deprecation warning block
item = request.meta['item']
index = request.meta['index']
image_guid = item['title'] # change to request.url after deprecation
if item['image_url'][0][-4:] == ".gif":
return 'doutula/gif/%s.gif' % (image_guid)
if item['image_url'][0][-4:] == '.png':
return 'doutula/png/%s.png' % (image_guid)
return 'doutula/jpg/%s.jpg' % (image_guid)
def item_completed(self, results, item, info):
if "image_url" in item:
item["image_path"] = [x['path'] for ok, x in results if ok]
return item
我试过重写image_downloaded、get_images、convert_image,都不行啊~