从网页获取国际字符?
时间: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>ÄÄ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将不适用于十六进制)。