从网页上获取国际字符?

2024-04-25 06:00:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用简单的python regexp从足球(soccer)网页上获取一些信息,问题是像第一个小伙子,里塔洛这样的球员,出来的时候是&;196;&;196;RITALO!
也就是说,html对特殊字符使用转义标记,例如&;196

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


Tags: 方法字符串标记信息网页htmlxmlamp
3条回答

尝试使用BeautifulSoup。它应该能做到这一点,并为您提供一个格式良好的DOM来使用。在

This blog条目似乎有一些成功。在

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

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

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

我建议使用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!

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

编辑: 另一种解决方案: Python开发人员Fredrik Lundh(elementtree等的作者)在他的网站上有a function to unsecape HTML entities,它可以处理十进制、十六进制和命名实体(beauthoulsoup不能处理十六进制实体)。在

相关问题 更多 >