Beautiful Soup 3 で HTML を解析していますが、Beautiful Soup 3 では自動的にデコードされない HTML エンティティが含まれています。
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<p>£682m</p>")
>>> text = soup.find("p").string
>>> print text
£682m
の HTML エンティティを の代わりtext
に にデコードするにはどうすればよいですか。"£682m"
"£682m"
ベストアンサー1
Python 3.4以上
import html
print(html.unescape('£682m'))
FYIhtml.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('£682m'))
£682m
また、six
インポートを簡素化する互換性ライブラリ:
>>> from six.moves.html_parser import HTMLParser
>>> h = HTMLParser()
>>> print(h.unescape('£682m'))
£682m