Python-用Python字符串解码HTML实体?

发布于 2021-02-02 23:23:50

我正在使用Beautiful Soup 3解析一些HTML,但是它包含HTML实体,Beautiful Soup 3不会自动为我解码:

>>> from BeautifulSoup import BeautifulSoup

>>> soup = BeautifulSoup("<p>&pound;682m</p>")
>>> text = soup.find("p").string

>>> print text
&pound;682m

如何解码HTML实体text以获得"£682m"而不是"&pound;682m"

关注者
0
被浏览
160
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    Python 3.4以上

    用途html.unescape()

    import html
    print(html.unescape('&pound;682m'))
    

    FYI html.parser.HTMLParser.unescape已弃用,并且应该在3.5中删除,尽管它是错误地保留的。它将很快从语言中删除。

    Python 2.6-3.3

    你可以HTMLParser.unescape()从标准库中使用:

    • 对于python 2.6-2.7 HTMLParser
    • 对于Python 3 html.parser
    >>> try:
    ...     # Python 2.6-2.7 
    ...     from HTMLParser import HTMLParser
    ... except ImportError:
    ...     # Python 3
    ...     from html.parser import HTMLParser
    ... 
    >>> h = HTMLParser()
    >>> print(h.unescape('&pound;682m'))
    £682m
    

    你还可以使用six兼容性库来简化导入:

    >>> from six.moves.html_parser import HTMLParser
    >>> h = HTMLParser()
    >>> print(h.unescape('&pound;682m'))
    £682m
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看