2024-04-25 06:00:18 发布
网友
我想用简单的python regexp从足球(soccer)网页上获取一些信息,问题是像第一个小伙子,里塔洛这样的球员,出来的时候是&;196;&;196;RITALO! 也就是说,html对特殊字符使用转义标记,例如&;196
有没有一种简单的方法将html读入正确的python字符串?如果它是XML/XHTML,那么就很容易了,解析器就会这么做。在
尝试使用BeautifulSoup。它应该能做到这一点,并为您提供一个格式良好的DOM来使用。在
This blog条目似乎有一些成功。在
我自己没试过,但你试过吗
http://zesty.ca/python/scrape.html?在
它似乎有一个方法htmldecode(text)可以做你想要的。在
我建议使用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!
(如果标准的codecs模块包含一个编解码器,这样您就可以做"some_string".decode('html_entities'),但不幸的是它没有!)在
"some_string".decode('html_entities')
编辑: 另一种解决方案: Python开发人员Fredrik Lundh(elementtree等的作者)在他的网站上有a function to unsecape HTML entities,它可以处理十进制、十六进制和命名实体(beauthoulsoup不能处理十六进制实体)。在
尝试使用BeautifulSoup。它应该能做到这一点,并为您提供一个格式良好的DOM来使用。在
This blog条目似乎有一些成功。在
我自己没试过,但你试过吗
http://zesty.ca/python/scrape.html?在
它似乎有一个方法htmldecode(text)可以做你想要的。在
我建议使用BeautifulSoup进行HTML抓取。您还需要告诉它将HTML实体转换为相应的Unicode字符,如下所示:
(如果标准的codecs模块包含一个编解码器,这样您就可以做
"some_string".decode('html_entities')
,但不幸的是它没有!)在编辑: 另一种解决方案: Python开发人员Fredrik Lundh(elementtree等的作者)在他的网站上有a function to unsecape HTML entities,它可以处理十进制、十六进制和命名实体(beauthoulsoup不能处理十六进制实体)。在
相关问题 更多 >
编程相关推荐