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

如何用BeautifulSoup提取<li>标签指定类名并生成数组

解决方案

你的现有代码仅获取了第一个<li>标签,要提取所有<li>里以bar开头的类名并生成目标格式数组,按以下方式修改代码:

修改后的完整代码

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, 'html.parser')  
# 获取页面中所有<li>标签
all_li_tags = soup.find_all('li')
# 初始化结果数组
scraped = []

# 遍历每个<li>标签
for li in all_li_tags:
    # 遍历当前<li>的所有类名,筛选bar开头的项
    for class_name in li.get('class', []):
        if class_name.startswith('bar'):
            scraped.append(class_name)
            break  # 每个<li>仅含一个bar开头类名,找到后直接跳出内层循环

print(scraped)

关键改动说明

  1. 获取所有<li>标签:用soup.find_all('li')替代soup.li,后者仅返回第一个匹配的<li>,前者会返回页面中所有<li>元素的列表。
  2. 安全获取类列表:使用li.get('class', [])而非直接li['class'],避免遇到无class属性的<li>时抛出异常。
  3. 精准筛选目标类名:通过startswith('bar')判断类名是否符合要求,确保只提取你需要的类。
  4. 优化遍历效率:每个目标<li>仅包含一个bar开头的类名,找到后用break跳出内层循环,减少不必要的遍历。

执行代码后,会输出你需要的格式:

["bar188457","bar188053","bar187776","bar187777","bar187380"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:20:16