从网页获取国际字符?[复制]

Getting international characters from a web page? [duplicate]

提问人:Nick Fortescue 提问时间:9/10/2008 最后编辑:lillqNick Fortescue 更新时间:9/26/2008 访问量:1872

问:

我想使用简单的 python 正则表达式从足球(足球)网页上抓取一些信息。问题在于,像第一个小伙子 ÄÄRITALO 这样的玩家以 ÄÄ里塔洛!
也就是说,html 对特殊字符使用转义标记,例如 Ä

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

python html 解析 unicode

评论


答:

0赞 Nick Fortescue 9/10/2008 #1

我自己没有尝试过,但你试过吗

http://zesty.ca/python/scrape.html

它似乎有一个方法htmldecode(text),可以做你想做的事。

2赞 Jacob Rigby 9/10/2008 #2

尝试使用 BeautifulSoup。它应该可以解决问题,并为您提供一个格式良好的 DOM 来使用。

这篇博文似乎取得了一些成功。

7赞 dF. 9/10/2008 #3

我会推荐 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!

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

编辑:另一种解决方案: Python 开发人员 Fredrik Lundh(elementtree 的作者等)在他的网站上有一个功能可以取消 HTML 实体,该实体适用于十进制、十六进制和命名实体(BeautifulSoup 不适用于十六进制实体)。