BeautifulSoup在不深入解析标签的情况下对标签进行计数
问题内容:
在写这个问题的答案时,我考虑了以下内容。
假设我有一个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
标签的标签。
因此,有两个问题:
- 有没有一种方法可以使BS 不 递归搜索到已找到的标签中?
- 如果对1的回答是“是”,那么它会更有效还是内部流程相同?
问题答案:
BeautifulSoup
不能仅提供找到的标签数量/数量。
但是,您可以改善的是:不要BeautifulSoup
通过传递recursive=False
以下内容来搜索其他部分中的部分:
len(soup.find_all("section", recursive=False))
除了改进之外,lxml
还可以更快地完成工作:
tree.xpath('count(//section)')