如何在beautifulsoup中只获取完整的li标签? [复制]

Posted

技术标签:

【中文标题】如何在beautifulsoup中只获取完整的li标签? [复制]【英文标题】:How to get only full li tags in beautifulsoup? [duplicate] 【发布时间】:2018-08-04 20:10:43 【问题描述】:

我有以下情况

<ul class="fullname">
    <li><a href="">some name</a></li>
    <li>
        <ul>
            <li>name1</li>
            <li>Name2</li>
        </ul>
    </li>
        <ul>
            <li>name3</li>
            <li>Name4</li>
        </ul>
    </li>         
</ul>

我只想要子元素中的三个元素,在第一个索引中 &lt;li&gt;&lt;a href=""&gt;some name&lt;/a&gt;&lt;/li&gt; 和第二个 &lt;ul&gt;&lt;li&gt;name1&lt;/li&gt;&lt;li&gt;Name2&lt;/li&gt;&lt;/ul&gt;

我已经尝试了以下

navContent = content.find("li","class":"fullname")
children = navContent.find_all("li")

但在第二个索引中,它给出的是&lt;li&gt;name1&lt;/li&gt;,而不是整个li。我怎样才能得到它?

【问题讨论】:

【参考方案1】:

使用recursive=False

来自文档:

如果您调用mytag.find_all(),Beautiful Soup 将检查mytag 的所有后代:它的孩子、它孩子的孩子等等。如果只希望美汤考虑直子,可以传入recursive=False

navContent = content.find("ul","class":"fullname")
children = navContent.find_all("li", recursive=False)

【讨论】:

以上是关于如何在beautifulsoup中只获取完整的li标签? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在递归菜单中只选择*** li?

BeautifulSoup:如何从包含一些嵌套 <ul> 的 <ul> 列表中提取所有 <li>?

BeautifulSoup:获取文字,创建字典

如何在 BeautifulSoup 中删除空格

BeautifulSoup无法通过其类找到标签

使用Beautifulsoup时删除标签