小编典典

BeautifulSoup在不深入解析标签的情况下对标签进行计数

python

在写这个问题的答案时,我考虑了以下内容。

假设我有一个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标签的标签。

因此,有两个问题:

  1. 有没有一种方法可以使BS 递归搜索到已找到的标签中?
  2. 如果对1的回答是“是”,那么它会更有效还是内部流程相同?

阅读 210

收藏
2021-01-20

共1个答案

小编典典

BeautifulSoup 不能仅提供找到的标签数量/数量。

但是,您可以改善的是:不要BeautifulSoup通过传递recursive=False以下内容来搜索其他部分中的部分:

len(soup.find_all("section", recursive=False))

除了改进之外,lxml还可以更快地完成工作:

tree.xpath('count(//section)')
2021-01-20