从网页获取国际字符?

时间:2020-03-05 18:50:27  来源:igfitidea点击:

我想使用简单的python regexp从足球(足球)网页上抓取一些信息。问题是,第一个小组?? RITALO等球员以RITALO的身份出现!
也就是说,html对特殊字符使用转义标记,例如

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

解决方案

回答

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

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

它似乎有一个htmldecode(text)方法,可以执行我们想要的操作。

回答

尝试使用BeautifulSoup。它应该可以解决问题,并为我们提供格式良好的DOM,以便我们也可以使用它。

这篇博客文章似乎已经取得了一些成功。

回答

我建议将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将不适用于十六进制)。