题
这个问题在这里已经有答案了:
- 解码Python字符串中的HTML实体? 5 个答案
我想使用简单的 python 正则表达式从足球网页上抓取一些信息。问题是,像第一小伙子艾里塔洛这样的玩家,最终都是艾里塔洛!
也就是说,html 对特殊字符使用转义标记,例如 Ä
有没有一种简单的方法将 html 读入正确的 python 字符串?如果它是 XML/XHTML 那就很容易了,解析器会做到这一点。
解决方案
我会推荐 美丽汤 用于 HTML 抓取。您还需要告诉它将 HTML 实体转换为相应的 Unicode 字符,如下所示:
>>> from BeautifulSoup import BeautifulSoup
>>> html = "<html>ÄÄ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 不适用于十六进制实体)。
其他提示
不隶属于 StackOverflow