被 python 的编码问题折腾死了

2016-01-18 18:36:01 +08:00
 Yourdaye

python2.7+ubuntu

用 beautifusoup 来解析一个网页,死活都输出不了中文

什么 encode,decode 试了个遍都不行啊

折腾了一下午.....

有过类似经验的 V 友们给点指导啊!

6626 次点击
所在节点    Python
50 条回复
ltm
2016-01-18 22:49:47 +08:00
你需要 python3
n6DD1A640
2016-01-18 22:53:25 +08:00
反正能用 python 3 的地方我都用了。。
jok3r
2016-01-18 23:24:32 +08:00
暑假折腾过一次,用 Python3 解决,后来再转 Python2 ,却又没问题了。
前几天又折腾一次,折腾一晚上,结果发现网页开启了 gzip 压缩,需要先解压再解析。
zaishanfeng
2016-01-18 23:47:16 +08:00
@Yourdaye 这个只是一个函数 可以 import 直接导入就能用 试过很多方法 什么 reload 什么 requests 什么 encode 有的情况上面的可以解决 但是很多时候试遍了还是不行 只有 smart_str 百试百灵
quietin
2016-01-18 23:48:17 +08:00
nooper
2016-01-19 00:11:48 +08:00
py3
Delbert
2016-01-19 00:12:00 +08:00
用 requests 输出文件编码。我曾接解析过一个繁体中文网页差点没折腾死我,后来发现是 ISO1xxxx 编码……
fy
2016-01-19 00:37:37 +08:00
@Delbert requests 特定网页有一个问题,没记错的话是信任服务器反馈的 encoding 而不是 html 中指定的 encoding 。

不过这个函数官方也写了,我不懂他们为啥不默认开启
LINAICAI
2016-01-19 02:01:58 +08:00
还从来没遇到过编码问题没法解决的。。。别乱喷
limbo0
2016-01-19 03:53:07 +08:00
方法是一律导成 unicode
popil1987
2016-01-19 08:53:17 +08:00
由于你没有放出错误,所以说几处容易乱码的你参考一下。
1.确定获取的内容是字符串吗?有可能是 gzip 压缩的
2.用 chardet 检测获取内容的编码,或者存到文件中,用 file 命令查看文件编码
3.获取的内容要 decode 成 unicode 才能输出
4.存到文件要 encode 成某个编码
laobaozi
2016-01-19 08:54:29 +08:00
chardet +1
另外我还遇见过抓取的网页有一部分在终端显示不全,还以为网页是由 js 生成的,直到我把抓取的内容写入文件....
Hackathon
2016-01-19 08:56:57 +08:00
ltype
2016-01-19 09:17:38 +08:00
用 python3 啊
zhuangzhuang1988
2016-01-19 09:23:03 +08:00
所以, 来学 c#吧..
strahe
2016-01-19 09:35:30 +08:00
python3 从来不考虑这些问题
Yourdaye
2016-01-19 09:47:21 +08:00
@strahe 以后果断 python3,不知道 2 的坑还有多少
caomaocao
2016-01-19 09:48:10 +08:00
@Victor215 chardet 对短的文本 不一定判断对啊!
zkzipoo
2016-01-19 10:29:27 +08:00
locale charmap
#coding:utf-8
怎么不把网页发过来
zkzipoo
2016-01-19 10:32:47 +08:00
更正一下#coding=utf-8

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX