十五、Scrapy框架–实战–zcool网站精选图高速下载(4)
Scrapy下载图片
1、解析图片的链接。
2、定义一个item,上面有两个字段,一个是image_urls,一个是images。其中images_urls是用来存储图片的链接,由开发者把数据爬取下来后添加的。
3、使用scrapy.pipelines.images.ImagesPipeline来作为数据保存的pipeline。
4、在settings.py中设置IMAGES_STORE来定义图片下载的路径。
5、如果想要有更复杂的图片保存的路径需求,可以重写ImagePipeline的file_path方法,这个方法用来返回每个图片的保存路径。
6、而file_path 方法没有item对象,所以我们还需要重写get_media_requests方法,来把item绑定到request上。示例代码如下:
class ImagedownloadPipeline(ImagesPipeline):
def get_media_requests(self, item, info):
media_requests =super(ImagedownloadPipeline, self).get_media_requests(item, info)
for media_request in media_requests:
media_request.item = item
return media_requests
def file_path(self, request, response=None,info=None):
origin_path =super(ImagedownloadPipeline, self).file_path(request, response, info)
title = request.item['title']
title = re.sub(r,'[\\/:\*\?"<>]', "", title)
save_path =os.path.join(settings.IMAGES_STORE, title)
if not os.path.exists(save_path):
os.mkdir(save_path)
imsge_name =origin_path.replace("full/", "")
return os.path.join(save_path,imsge_name)
7、在创建文件夹的时候,要注意一些特殊字符是不允许作为文件夹的名字而存在的,那么我们就可以通过正则表达式来删掉 r, '[\\/:\*\?"<>]' 。
上一篇文章 第六章 Scrapy框架(十四) 2020-03-16 地址:
https://www.jianshu.com/p/2febb184009d
下一篇文章 第六章 Scrapy框架(十六) 2020-03-18 地址:
https://www.jianshu.com/p/99c60ce24571
以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。