Я анализирую некоторый HTML с Красивым Супом 3, но он содержит объекты HTML, которые Красивый Суп 3 автоматически не декодирует для меня:
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("<p>£682m</p>")
>>> text = soup.find("p").string
>>> print text
£682m
Как я могу декодировать объекты HTML в text
добираться "£682m"
вместо "£682m"
.
Использование HTML .unescape ()
:
import html
print(html.unescape('£682m'))
FYI HTML.Parser.htmlparser.unescape
устарел, а должен был удалить в 3,5 , хотя он был оставлен по ошибке Отказ Это будет снято с языка в ближайшее время.
Вы можете использовать HTMLParser.unescape ()
из стандартной библиотеки:
HTMLParser
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
Вы также можете использовать в шесть
библиотеку совместимости, чтобы упростить импорт:
>>> from six.moves.html_parser import HTMLParser
>>> h = HTMLParser()
>>> print(h.unescape('£682m'))
£682m
Красивый суп обрабатывает преобразование сущностей. В Beautiful Soup 3 необходимо указать аргумент convertEntities
в конструкторе BeautifulSoup
(см. раздел 'Преобразование сущностей' в архивных документах). В Beautiful Soup 4 сущности декодируются автоматически.
>>> from BeautifulSoup import BeautifulSoup
>>> BeautifulSoup("<p>£682m</p>",
... convertEntities=BeautifulSoup.HTML_ENTITIES)
<p>£682m</p>
>>> from bs4 import BeautifulSoup
>>> BeautifulSoup("<p>£682m</p>")
<html><body><p>£682m</p></body></html>