извлечение & lt и & gt из html с использованием python - PullRequest
0 голосов
/ 23 марта 2019

У меня есть HTML в кодировке UTF-8, как показано ниже.Я хочу извлечь из этого теги OWNER, NVCODE, CKHEWAT, используя python и bs4.Но <> преобразуется в <и> я не могу извлечь текст из тегов OWNER, NVCODE, CKHEWAT.

пожалуйста, помогите мне извлечь текст из этих тегов.

<?xml version="1.0" encoding="utf-8"?><html><body><string xmlns="http://tempuri.org/">&lt;root&gt;&lt;OWNER&gt;अराजी मतरुका   वासीदेह &lt;/OWNER&gt;&lt;NVCODE&gt;00108&lt;/NVCODE&gt;&lt;CKHEWAT&gt;811&lt;/CKHEWAT&gt;&lt;/root&gt;</string></body></html>

Myкод

response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")
soup.find('string').text

1 Ответ

1 голос
/ 23 марта 2019

Проверьте это

По умолчанию единственными символами, которые экранируются при выводе, являются голые амперсанды и угловые скобки. Они превращаются в «&», «<» и «>», так что Beautiful Soup случайно не генерирует недопустимый HTML или XML:

soup = BeautifulSoup("<p>The law firm of Dewey, Cheatem, & Howe</p>")
soup.p
# <p>The law firm of Dewey, Cheatem, &amp; Howe</p>

soup = BeautifulSoup('<a href="http://example.com/?foo=val1&bar=val2">A link</a>')
soup.a
# <a href="http://example.com/?foo=val1&amp;bar=val2">A link</a>

Вы можете изменить это поведение, указав значение аргумента форматера prettify (), encode () или decode (). Beautiful Soup распознает шесть возможных значений форматера.

По умолчанию используется форматтер = "минимальный". Строки будут обрабатываться только для того, чтобы Beautiful Soup генерировал действительный HTML / XML:

french = "<p>Il a dit &lt;&lt;Sacr&eacute; bleu!&gt;&gt;</p>"
soup = BeautifulSoup(french)
print(soup.prettify(formatter="minimal"))
# <html>
#  <body>
#   <p>
#    Il a dit &lt;&lt;Sacré bleu!&gt;&gt;
#   </p>
#  </body>
# </html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...