代码之家  ›  专栏  ›  技术社区  ›  Nick Fortescue

从网页中获取国际字符?[复制品]

  •  7
  • Nick Fortescue  · 技术社区  · 16 年前

    这个问题已经有了答案:

    我想使用简单的python regexp从足球(soccer)网页上获取一些信息。问题是,第一个小伙子,Ritalo,这样的球员会以&196;&196;Ritalo的身份出现!
    也就是说,HTML将转义标记用于特殊字符,如&196;

    是否有一种简单的方法可以将HTML读取到正确的python字符串中?如果它是XML/XHTML,那么很容易,解析器就可以做到。

    3 回复  |  直到 16 年前
        1
  •  7
  •   dF.    16 年前

    我建议你 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 在他的网站上,使用十进制、十六进制和命名实体(BeautifulSoup不使用十六进制)。

        2
  •  2
  •   Jacob Rigby    16 年前

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

    This blog 参赛似乎取得了一些成功。

        3
  •  0
  •   Nick Fortescue    16 年前

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

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

    它似乎有一个方法htmldecode(文本),可以做你想要的。