V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
weeevv
V2EX  ›  Python

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

  •  
  •   weeevv · 2018-01-30 19:13:22 +08:00 · 3250 次点击
    这是一个创建于 2489 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用 HTMLParser 解析页面代码,其它部分都没问题,但是个别音标会出错。
    比如 abdication, 音标为: "美 [ˌæbdɪ'keɪʃ(ə)n] ",会被解析成"美[ˌbdɪ'ke�", 查看页面编码是 utf-8 没问题,音标行代码为:
    <div class="hd_prUS">美&nbsp;[ˌæbdɪ'keɪʃ(ə)n] </div>。

    Python 版本 2.7, 请问我是哪里出了问题?
    6 条回复    2018-02-01 15:22:41 +08:00
    rabbbit
        1
    rabbbit  
       2018-01-30 19:35:40 +08:00
    把所有代码贴上来
    TimePPT
        2
    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
        3
    est  
       2018-01-30 20:02:44 +08:00 via Android
    requests 爬的?这玩意坑
    winglight2016
        4
    winglight2016  
       2018-01-31 11:16:46 +08:00
    这种音标需要字体支持吧?
    weeevv
        5
    weeevv  
    OP
       2018-02-01 15:22:09 +08:00
    谢谢楼上几倍,本科时写的代码直接拿来用了,没注意对音标部分作了长度限制导致 UTF8 编码直接被截断了----我原本想限制的是音标字符串的长度,所以产生了乱码。
    另外转义字符也没处理,导致æ在音标没有显示。
    weeevv
        6
    weeevv  
    OP
       2018-02-01 15:22:41 +08:00
    @weeevv 几倍-->几位
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2029 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 00:58 · PVG 08:58 · LAX 16:58 · JFK 19:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.