从网页获取国际字符?

Nic*_*cue 7 html python unicode parsing

我想使用简单的python regexp从足球(足球)网页上删除一些信息.问题在于,像第一个小伙子,ÄRITALO这样的球员出现了ÄÄ RITALO!
也就是说,html对特殊字符使用转义标记,例如Ä

有没有一种简单的方法将html读入正确的python字符串?如果它是XML/XHTML那么很容易,解析器会这样做.

dF.*_*dF. 7

我建议使用BeautifulSoup进行HTML抓取.您还需要告诉它将HTML实体转换为相应的Unicode字符,如下所示:

>>> from BeautifulSoup import BeautifulSoup    
>>> html = "<html>&#196;&#196;RITALO!</html>"
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
>>> print soup.contents[0].string
ÄÄRITALO!
Run Code Online (Sandbox Code Playgroud)

(如果标准编解码器模块包含一个编解码器,那将是很好的,这样你可以做 "some_string".decode('html_entities')但不幸的是它没有!)

编辑: 另一个解决方案:Python开发人员Fredrik Lundh(elementtree的作者,除其他外)有 一个功能来取消他的网站上的HTML实体,它与十进制,十六进制和命名实体一起工作(BeautifulSoup不适用于六角形实体).