提问人:Nick Fortescue 提问时间:9/10/2008 最后编辑:lillqNick Fortescue 更新时间:9/26/2008 访问量:1872
从网页获取国际字符?[复制]
Getting international characters from a web page? [duplicate]
问:
我想使用简单的 python 正则表达式从足球(足球)网页上抓取一些信息。问题在于,像第一个小伙子 ÄÄRITALO 这样的玩家以 ÄÄ里塔洛!
也就是说,html 对特殊字符使用转义标记,例如 Ä
有没有一种简单的方法可以将 html 读入正确的 python 字符串?如果是 XML/XHTML,那就很容易了,解析器会这样做。
答:
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>ÄÄ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 不适用于十六进制实体)。
上一个:点击带有硒的按钮
评论