xar*_*tra 4 python svg beautifulsoup
在解析SVG文件时,我注意到 beautifulsoup 添加了html标签。
from bs4 import BeautifulSoup
soup = BeautifulSoup('<svg></svg>', 'lxml')
print(soup)
Run Code Online (Sandbox Code Playgroud)
结果是:
<html><body><svg></svg></body></html>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?可以避免吗?
您使用lxml解析器,即 HTML 解析器。要解析 XML,您应该使用xml parser:
from bs4 import BeautifulSoup\nsoup = BeautifulSoup(\'<svg></svg>\', \'xml\')\nprint(soup) # ^^^^^^\nRun Code Online (Sandbox Code Playgroud)\n\n来自 BeautifulSoup 文档:
\n\n\n\n\nBeautiful Soup 向许多不同的解析器提供相同的接口,但每个解析器都是不同的。不同的解析器将从同一文档创建不同的解析树。最大的区别在于 HTML 解析器和 XML 解析器之间。 Here\xe2\x80\x99s a short\n document, parsed as HTML:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nBeautifulSoup("<a><b /></a>")\n# <html><head></head><body><a><b></b></a></body></html>\n由于空标签不是有效的 HTML,解析器将其转换为\n 标签对。
\n\n这里\xe2\x80\x99s 是解析为 XML 的相同文档(运行此文件需要安装 lxml)。请注意,空标记被单独保留,并且为文档提供了 XML 声明,而不是放入标记中。:
\n\nRun Code Online (Sandbox Code Playgroud)\nBeautifulSoup("<a><b /></a>", "xml")\n# <?xml version="1.0" encoding="utf-8"?>\n# <a><b/></a>\n
来源:解析器之间的差异,重点是我的。
\n| 归档时间: |
|
| 查看次数: |
2831 次 |
| 最近记录: |