我试图使用BeautifulSoup在HTML页面上找到一个Gliffy图表。HTML页面的源代码大致如下所示:
<p>Lorem ipsum dolor sit amet</p>
<p>Figure: Consectetur adipiscing elit</p>
<p>
<ac:structured-macro ac:macro-id="a9ab423b-b68c-4836-bffa-cdf1c5b95392" ac:name="gliffy" ac:schema-version="1">
<ac:parameter ac:name="displayName">Sed do eiusmod</ac:parameter>
<ac:parameter ac:name="name">Tempor incididunt ut</ac:parameter>
<ac:parameter ac:name="pagePin">2</ac:parameter>
</ac:structured-macro>
</p>
<p><br/></p>我想在页面中定位<ac:structured-macro ac:macro-id="a9ab423b-b68c-4836-bffa-cdf1c5b95392" ac:name="gliffy" ac:schema-version="1">,但不使用像soup.find_all('ac:structured-macro')这样的通用语句,因为在汇流中使用了多种宏,所以我想要准确定位ac:name="gliffy"宏,排除所有其他可能性。
但是,因为这看起来不像一个标准的HTML标记。我不确定BeautifulSoup是正确的选择。我是否应该使用其他库,如lxml。无论如何,请让我知道我应该使用哪个库和什么函数,以及我应该如何调用以准确定位这个HTML页面中的Gliffy图。谢谢。
发布于 2021-09-14 08:57:50
对于xml数据,您仍然可以使用BeautifulSoup,但是您需要加载lxml解析器,而不是在标准库中加载。
pip install lxml这里有一个关于如何查找代码的示例:
from bs4 import BeautifulSoup
html = """<p>Lorem ipsum dolor sit amet</p>
<p>Figure: Consectetur adipiscing elit</p>
<p>
<ac:structured-macro ac:macro-id="a9ab423b-b68c-4836-bffa-cdf1c5b95392" ac:name="gliffy" ac:schema-version="1">
<ac:parameter ac:name="displayName">Sed do eiusmod</ac:parameter>
<ac:parameter ac:name="name">Tempor incididunt ut</ac:parameter>
<ac:parameter ac:name="pagePin">2</ac:parameter>
</ac:structured-macro>
</p>
<p><br/></p>"""
soup = BeautifulSoup(html, "lxml")
for tag in soup.find_all(attrs={"ac:name": "gliffy"}):
print(tag)https://stackoverflow.com/questions/69174589
复制相似问题