编码总结

本文主要讨论了Python爬虫过程中遇到的编码问题,包括原因、解决方案和一些非正规解决办法。重点讲述了如何处理Unicode与GBK编码的转换,以及在Windows CMD中遇到的中文乱码问题。建议在编码中使用Unicode作为中间格式,以避免乱码。
摘要由CSDN通过智能技术生成

爬虫编码总结

原因

取到的网页文字内容在编码上存在一定的 trick ,简单来说就是 unicode 形式的 gbk 编码内容,形如:

 u'\xd6\xb0\xce\xbb\xc3\xe8\xca\xf6'

而事实上,这个字符串实际所要表达的 gbk 编码内容为
‘\xd6\xb0\xce\xbb\xc3\xe8\xca\xf6’,对应的汉字字符为“职位描述”

解这个问题可参见
http://stackoverflow.com/questions/14539807/convert-unicode-with-utf-8-string-as-content-to-str

可以看到,关键之处在于利用了以下这一特性:
Unicode codepoints U+0000 to U+00FF all map one-on-one with the latin-1 encoding

先将 unicode 字符串编码为 latin1 字符串,编码后保留了等价的字节流数据。
而此时在这个问题中,这一字节流数据又恰恰对应了 gbk 编码,因此对其进行解码即可还原最初的 unicode 字符。
不过值得注意的是,需要确定的是形如\xd6\xb0 究竟是 utf8 编码还是类似 gbk 类型的其他编码,
这一点对于最终正确还原 unicode 字符同样重要。

综上所述,对拿到的 content 执行以下操作即可:
content.encode(“latin1”).decode(“gbk”)

解决方案

resp = requests.get('http://www.******')
print resp.encoding # ISO-8859-1
print resp.apparent_encoding # GB2312
resp.encoding = resp.apparent_encoding
content = res
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值