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

如何提取class为list-unstyled search-vehicle-info-2 fs13的ul下li数据并归入对应表头

实现步骤与代码示例
  • 现有代码的问题:直接调用soup.find_all("li")是提取了整个页面所有li元素,既没有限定在目标ul的范围内,也没有和表头做对应匹配,无法得到你需要的、和表头一一对应的结构化数据。
  • 核心实现逻辑:先定位到你指定class属性的ul标签,仅在该ul范围内提取li元素,再和表头字段按顺序匹配,就可以生成对应表头的结构化数据,最终转为DataFrame。

参考截图:
参考截图

代码实现

单组ul数据的情况

from bs4 import BeautifulSoup
import pandas as pd

# 1. 定位指定class的ul标签,把参数替换为你实际的class值
# 注意:bs4中用class_参数指定class属性,因为class是Python保留关键字
target_ul = soup.find("ul", class_="你的目标ul的class属性值")

# 2. 提取该ul下所有li的文本
li_texts = [li.text.strip() for li in target_ul.find_all("li")]

# 3. 提取表头,有两种方式:
# 方式1:手动指定表头
headers = ["表头1", "表头2", "表头3"] # 替换为你实际的表头字段,数量和li数量对应
# 方式2:自动提取页面上的表头,比如表头在class为table-header的ul下
# header_ul = soup.find("ul", class_="表头ul的class值")
# headers = [li.text.strip() for li in header_ul.find_all("li")]

# 4. 组装为字典,生成DataFrame
data = dict(zip(headers, li_texts))
df = pd.DataFrame([data])

多组相同class的ul数据的情况

如果页面上有多个相同class的ul,对应多行数据,可使用如下写法:

from bs4 import BeautifulSoup
import pandas as pd

# 提前提取表头
headers = ["表头1", "表头2", "表头3"] # 或用上面的自动提取方式
data_list = []

# 找到所有指定class的ul
target_uls = soup.find_all("ul", class_="你的目标ul的class属性值")
for ul in target_uls:
    li_texts = [li.text.strip() for li in ul.find_all("li")]
    # 保证li数量和表头数量一致,避免报错
    if len(li_texts) == len(headers):
        row = dict(zip(headers, li_texts))
        data_list.append(row)

df = pd.DataFrame(data_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:48:03