记一次编码转换,遇到的坑

记一次编码转换,遇到的坑

 

场景:

爬虫,爬取需要下载的文件,如img,excel,这时我们需要response.content,获取二进制数据,因某些原因,没有进行先下现存,需要保持二进制数据到数据库,然后取出数据库的数据,进行解析

 

数据库:

mongodb

kafka

 

mongodb可以正常存储二进制数据

但是kafka存储过程报错,因kafka 存储需要json序列化一下(目前我用的这种方式,kafka小白)进行存储,此时报错,json.loads,无法序列化二进制文件,

 

更改下载代码对数据进行str转化,str(response.content),进行存储,此时,正常存储mongodb,和kafka,

 

but:

解析过程出现错误,取出mongodb中的数据,

显示str类型,进行bytes转化,

成功转为bytes,但是出现下图情况:

 

双bb和双斜杠,此时无法正常使用with open wb方式写入文件,需要进行数据转化,有两种方式解决

方法一:

base64加密后转str,然后直接base64解密

 

这里注意加密后还是要转str才可以正常保存,

此时解密

 

解密后文件直接是二进制,可以正常with open wb 存储

方法二:

存储直接str(response.content)

转化使用eval 方法

eval(data),

不要用bytes,转化成功直接就是bytes类型,可以正常with open wb 存储

eval 可以进行 字典,列表的转化 "[1,2,43,4]","{'yyy':'2222'}",直接转成原来的格式

 

有点乱,将就着看

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值