我有一个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/"><root><OWNER>अराजी मतरुका वासीदेह </OWNER><NVCODE>00108</NVCODE><CKHEWAT>811</CKHEWAT></root></string></body></html>
我的代码
response = requests.get(url)
soup = BeautifulSoup(response.text, "lxml")
soup.find('string').text
答案 0 :(得分:1)
默认情况下,输出时唯一转义的字符是“&”号和尖括号。它们被转换为“&”,“ <”和“>”,以使Beautiful Soup不会无意间生成无效的HTML或XML:
soup = BeautifulSoup("<p>The law firm of Dewey, Cheatem, & Howe</p>")
soup.p
# <p>The law firm of Dewey, Cheatem, & 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&bar=val2">A link</a>
您可以通过为prettify(),encode()或decode()的formatter参数提供一个值来更改此行为。 Beautiful Soup可以识别格式化程序的六个可能值。
默认值为formatter =“ minimal”。仅对字符串进行足够的处理以确保Beautiful Soup可以生成有效的HTML / XML:
french = "<p>Il a dit <<Sacré bleu!>></p>"
soup = BeautifulSoup(french)
print(soup.prettify(formatter="minimal"))
# <html>
# <body>
# <p>
# Il a dit <<Sacré bleu!>>
# </p>
# </body>
# </html>