在写这个问题的答案时,我考虑了以下内容。
假设我有一个xml像这样的深层嵌套文件(但是嵌套得更多并且更长):
xml
<section name="1"> <subsection name"foo"> <subsubsection name="bar"> <deeper name="hey"> <much_deeper name"yo"> <li>Some content</li> </much_deeper> </deeper> </subsubsection> </subsection> </section> <section name="2"> ... and so forth </section>
问题len(soup.find_all("section"))在于,在执行时find_all("section"),BS会继续深入搜索我知道不会包含任何其他section标签的标签。
len(soup.find_all("section"))
find_all("section")
section
因此,有两个问题:
BeautifulSoup 不能仅提供找到的标签数量/数量。
BeautifulSoup
但是,您可以改善的是:不要BeautifulSoup通过传递recursive=False以下内容来搜索其他部分中的部分:
recursive=False
len(soup.find_all("section", recursive=False))
除了改进之外,lxml还可以更快地完成工作:
lxml
tree.xpath('count(//section)')