请教一个 Python 爬 bing 词典遇到的音标乱码的问题。

2018-01-30 19:13:22 +08:00
 weeevv
用 HTMLParser 解析页面代码,其它部分都没问题,但是个别音标会出错。
比如 abdication, 音标为: "美 [ˌæbdɪ'keɪʃ(ə)n] ",会被解析成"美[ˌbdɪ'ke�", 查看页面编码是 utf-8 没问题,音标行代码为:
<div class="hd_prUS">美&nbsp;[ˌæbdɪ'keɪʃ(ə)n] </div>。

Python 版本 2.7, 请问我是哪里出了问题?
3184 次点击
所在节点    Python
6 条回复
rabbbit
2018-01-30 19:35:40 +08:00
把所有代码贴上来
TimePPT
2018-01-30 19:49:08 +08:00
<div class="hd_prUS">美&#160;[ˌ&#230;bdɪ'keɪʃ(ə)n] </div>
直接看页面源码,这个 div 的内容是这样的,部分字符被转义了。
看看是不是这个原因导致的编码问题。
记得 HTMLParser 有专门的处理方法。
好像是这个 https://docs.python.org/2/library/htmlparser.html#HTMLParser.HTMLParser.handle_charref
你看下。

以及,貌似页面 head 的 meta 里也有同样信息,还好解一些,可以试试拿到。
我用 BeautifulSoup 直接解析的,没问题(解析器用的 lxml )
est
2018-01-30 20:02:44 +08:00
requests 爬的?这玩意坑
winglight2016
2018-01-31 11:16:46 +08:00
这种音标需要字体支持吧?
weeevv
2018-02-01 15:22:09 +08:00
谢谢楼上几倍,本科时写的代码直接拿来用了,没注意对音标部分作了长度限制导致 UTF8 编码直接被截断了----我原本想限制的是音标字符串的长度,所以产生了乱码。
另外转义字符也没处理,导致æ在音标没有显示。
weeevv
2018-02-01 15:22:41 +08:00
@weeevv 几倍-->几位

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

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

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

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

© 2021 V2EX