使用python从html中提取<和>

时间:2019-03-23 12:16:01

标签: html python-3.x beautifulsoup

我有一个UTF-8编码的HTML,如下所示。我想使用python和bs4从中提取OWNER,NVCODE,CKHEWAT标签。但是<>转换为&lt并且&gt,我无法从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>

我的代码

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

1 个答案:

答案 0 :(得分:1)

Check this

默认情况下,输出时唯一转义的字符是“&”号和尖括号。它们被转换为“&”,“ <”和“>”,以使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()的formatter参数提供一个值来更改此行为。 Beautiful Soup可以识别格式化程序的六个可能值。

默认值为formatter =“ minimal”。仅对字符串进行足够的处理以确保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>