html - 使用python从html中提取<和>
问题描述
我有一个 UTF-8 编码的 HTML,如下所示。我想使用 python 和 bs4 从中提取 OWNER、NVCODE、CKHEWAT 标签。但是 <> 被转换为 < 和 > 我无法从 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
解决方案
默认情况下,唯一在输出时转义的字符是裸 & 和尖括号。这些会变成“&”、“<”和“>”,这样 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 为格式化程序识别六个可能的值。
默认值为格式化程序 =“最小”。字符串只会被处理到足以确保 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>
推荐阅读
- angularjs - 辛辣的angularjs正则表达式
- android - 在 Android Studio 中更改包名称并将两个目录设为单一目录
- ruby - 当用户输入错误信息时如何返回错误消息?
- python - 使用 Python 的 win32com 发送一条 MSMQ 消息,该消息通过响应队列请求答案
- javascript - 动态路由列表项
- c# - 当子函数应该覆盖时调用基类函数
- javascript - 当我们检查javascript中的复选框时如何增加计数值
- android - 如何在 Flutter 应用中打开 DropBox 下载的文件?
- c - 将 x86 共享库交叉编译到 ARM 架构
- javascript - JS 脚本在 wordpress 网站上不起作用(没有任何改变)