BeautifulSoup:XML中的查询名称空间



我有一个带有自定义名称区域的XML DOC:

<parent>
 <c1:doc>
   <c1:attr_a></c1:attr_a>
   <c1:attr_b></c1:attr_b>
 </c1:doc>
 <c2:doc>
   <c2:attr_a></c2:attr_a>
   <c2:attr_b></c2:attr_b>
  </c2:doc>
</parent>

在Python的"美丽"中可以查询本文档中所有attr_a属性的值吗?

我可以用原始的字符串操作横穿树或以非常乏味的方式穿越父母的孩子,但是是否可以直接查询soup.find_all('*.attr_a')或更直接地查询?任何建议都将不胜感激。

aha,显然可以在此任务中使用正则表达式。从文档中:

如果您通过正则表达式对象,那么美丽的汤将过滤 使用其搜索方法反对该正则表达式。此代码 找到所有名称以字母" b"开头的标签;在这个 情况,标签和标签:

html_doc = """
<parent>
 <c1:doc>
   <c1:attr_a></c1:attr_a>
   <c1:attr_b></c1:attr_b>
 </c1:doc>
 <c2:doc>
   <c2:attr_a></c2:attr_a>
   <c2:attr_b></c2:attr_b>
  </c2:doc>
</parent>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
import re
for tag in soup.find_all(re.compile(".attr_a")):
    print(tag.name)

最新更新