You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用BeautifulSoup的find_all获取ul下指定子元素之后的所有子节点

实现方案

下面提供两种常用实现思路,你可以根据自己的实际场景选择:


方法1:用find_next_siblings(更简便,推荐)

BeautifulSoup自带的同级节点查找方法,直接定位到基准节点后就能拿到后面的所有同级元素,代码更易读:

from bs4 import BeautifulSoup

# 示例HTML
html = '''
<ul>
    <li class = "list_item_1">item 1</li>
    <li class = "list_item_2">item 2</li>
    <li class = "list_item_3">item 3</li>
    <li class = "list_item_4">item 4</li>
</ul>
'''

soup = BeautifulSoup(html, 'html.parser')
# 定位到第二个li节点,如果你是按顺序定位,也可以写soup.find_all('li')[1]
base_node = soup.find('li', class_='list_item_2')
# 获取该节点之后的所有同级li
result = base_node.find_next_siblings('li')

执行后result就是你需要的目标结果。


方法2:仅用find_all实现

如果你要求必须通过find_all方法直接获取,有两种实现方式:

方式A:先全量获取再切片

all_li = soup.find_all('li')
# 索引从0开始计数,第二个li的索引是1,所以从索引2开始截取即可
result = all_li[2:]

方式B:自定义筛选规则直接过滤

base_node = soup.find('li', class_='list_item_2')
# 给find_all传入lambda筛选规则,仅匹配基准节点之后的li
result = soup.find_all('li', lambda tag: tag in base_node.find_next_siblings('li'))

内容的提问来源于stack exchange,提问作者Moe AbuShaqra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:21:04