python3爬虫采坑记录片之oss文件和字符串连接的学问

1:由于之前做了云上的项目,刚入手看oss的文档有点费力,因为有些变量阿里说的并不是很详细。今天刚好又用了一遍就把它扔出来。此处使用的是最简单的下载到本地再上传,并未实时并发。如果量大请另行参考阿里文档

从数据库取出接口下载

    #下载
    def agoda_img(self,id,pics):
        image_list=[]
        values=pics.split(",")
        header = {
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36",
        }
        #多图片下载
        for i in range(len(values)):
            url = values[i]
            ir = requests.get(url, headers=header)
            if ir.status_code == 200:
                # 成功保存图片
                abspath = "/root/wcspider/ctrip_up/agoda_image"
                path = abspath + "/" + str(id)
                # 创建文件
                if not os.path.exists(path):
                    os.makedirs(path)
                paths = str(id)+"_"+str(i)+ ".jpg"
                #将图片在Linux系统上移到指定位置,已存在跳过本次循环说明已下载
                with open(paths, 'wb') as f:
                    f.write(ir.content)
                    name = os.path.basename(paths)  # 获取文件名
                    dirname = os.path.dirname(paths)  # 获取文件目录
                    full_path = os.path.join(dirname, name)
                    try:
                        shutil.move(full_path, path)  ##转移文件到目标文件夹
                    except  Exception as e:
                        print("图片已下载")
                        continue
                    fname = path + "/" + paths
                    #oss配置,文档上有,key比较关键它是阿里云的目标目录
                    endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
                    access_key_id = 'LTAIdDUS3bCbQILs'
                    access_key_secret = '16CvB9kL5D7KMgxavAzMCd27D8Afn2'
                    bucket_name = 'lohas-changzhou'
                    key = "foreign_hotel/" + paths
                    ####上传图片到阿里云并记录成功的URL,先删除图片防止二次上传报错
                    deleimg = "foreign_hotel/" + paths.split(".")[0]
                    try:
                        bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
                        bucket.delete_object(deleimg)
                        res_back = bucket.put_object_from_file(key, filename=fname)
                        if res_back:
                            imageimg = "https://lohas-changzhou.oss-cn-hangzhou.aliyuncs.com/foreign_hotel/" + paths
                            image_list.append(imageimg)
                            ress_3 = 1
                            print('上传成功:%s' % fname)
                    except Exception as e:
                        ress_3 = 0
                        print('图片失败', fname)

                    # self.run_state(ress_3, id)
        #存储下载成功的图片链接到数据库供调用
        pic=None
        pics = ",".join(image_list)
        for m in image_list:
            if (str(id) + "_0") in m:
                pic = m
                break
            else:
                pic = image_list[0]
        #如已上传就不用写入了
        if pic and pics:
            self.insert_sql(id, pic, pics)

字符串拼接稍后在写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值