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

如何使用BeautifulSoup定位无属性列表并获取其所有子元素

BeautifulSoup文本定位嵌套列表解决方案

修正后可运行代码

import requests
from bs4 import BeautifulSoup

url = 'https://www.marketresearch.com/Infiniti-Research-Limited-v2680/Global-DNA-Microarray-30162580/'

page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')

toc = soup.find("div", id="toc")
# 定位包含目标文本的li父标签
market_drivers_tag = toc.find(lambda t: t.name == 'li' and 'Market drivers' in t.get_text(strip=True))

if market_drivers_tag:
    # 取该标签下第一个ul的所有直接子li,不限数量
    driver_list = [item.get_text(strip=True) for item in market_drivers_tag.find('ul').find_all('li', recursive=False)]
    print(driver_list)
else:
    print('未找到Market drivers模块')

对应问题处理逻辑

  • 无属性文本定位:通过lambda自定义匹配规则,直接筛选标签名和文本内容,无需依赖class、id等属性,是BeautifulSoup针对无属性标签定位的标准实现方式。
  • 不限数量取直接子节点:find_all('li', recursive=False)是BS4官方推荐的获取直接子元素的写法,会自动返回所有符合条件的直接子节点,数量不受限制,无需使用已废弃的findChildren方法。
  • 限定查找范围:定位到Market drivers对应的li标签后,所有查找操作都在该标签内部执行,天然不会匹配到后续Market challenges等其他模块的内容,无需额外设置find_all_next的终止条件。

内容的提问来源于stack exchange,提问作者Michael Wiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:36:03