Scrapy下载图片及自定义分类下载路径

配置下载图片的流程如下
  • 在items中定义两个属性,image_urls 和images 。image_urls是用来存储需要下载的图片url链接,列表类型;
  • 当文件下载完成后会把相关下载信息存入images属性中,如下载的url和图片校验码等;
  • 在配置文件settings中配置IMAGES_STORE用来指定下载的路径;
  • 启动pipeline,在settings中的ITEM_PIPELINE中设置scrapy.pipelines.images.ImagesPipeline:1;
  • 下载文件同理(两个属性file_urls和files),FILES_STORE
自定义分类下载路径
class CarImagesPipeline(ImagesPipeline):
    # 获取文件名
    def file_path(self, request, response=None, info=None):  # 在get_media_requests的方法后被调用
        path = super(CarImagesPipeline,self).file_path(request,response,info) #获取父类方法返回的图片名
        title = request.item.get('title') # 子文件夹名
        images = settings.IMAGES_STORE #主文件夹名
        title_path = os.path.join(images,title)
        if not os.path.exists(title_path):#不存在子文件夹就新建
            os.mkdir(title_path)
        image_name = path.replace('full/','') #获取父类方法返回的full%s%(image_guuid),并且获取图片的16进制哈希名
        image_path = os.path.join(title_path,image_name) #制作图片名
        return image_path
    
    # 生成下载请求
    def get_media_requests(self, item, info): 
        request_objs=super(CarImagesPipeline,self).get_media_requests(item,info)
        for request_obj in request_objs:
            request_obj.item = item #将item绑定到Request对象
        return request_objs

转载于:https://www.cnblogs.com/FuckSpider/p/11534621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值