记一次编码转换,遇到的坑
场景:
爬虫,爬取需要下载的文件,如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'}",直接转成原来的格式
有点乱,将就着看