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

如何用Python从指定HTML中提取年级信息PK,0K,01,02,03,04,05,SE

用BeautifulSoup提取目标年级字符串的解决方法

核心思路

先定位包含目标年级的HTML节点,再提取对应内容并筛选出「PK,0K,01,02,03,04,05,SE」这些指定代码。

具体实现方案

情况1:年级文本直接显示在标签内

假设你的HTML片段结构类似:

提供年级:PK, 0K, 01, 02, 03, 04, 05, SE

代码实现:

from bs4 import BeautifulSoup

# 替换为你实际获取的HTML内容
html_content = """<div class="school-grades">提供年级:PK, 0K, 01, 02, 03, 04, 05, SE</div>"""

soup = BeautifulSoup(html_content, "html.parser")
# 定位到包含年级的元素(根据实际标签、类名调整)
grade_node = soup.find("div", class_="school-grades")

if grade_node:
    # 提取文本并清理无关内容
    raw_text = grade_node.get_text(strip=True)
    # 拆分出所有年级代码
    all_grades = raw_text.split(":")[-1].split(", ")
    # 筛选目标年级
    target_grades = {"PK", "0K", "01", "02", "03", "04", "05", "SE"}
    filtered_grades = [g for g in all_grades if g in target_grades]
    # 拼接成需要的字符串格式
    result = ", ".join(filtered_grades)
    print(result)  # 输出:PK, 0K, 01, 02, 03, 04, 05, SE

情况2:年级存储在元素属性中

如果年级代码是放在data-*这类属性里,比如:

直接提取属性值即可:

soup = BeautifulSoup(html_content, "html.parser")
grade_node = soup.find("span", attrs={"data-grade-list": True})

if grade_node:
    result = grade_node["data-grade-list"]
    print(result)  # 输出:PK,0K,01,02,03,04,05,SE

常见问题排查

  • 确认元素定位是否准确:用soup.prettify()打印解析后的HTML,核对目标节点的标签名、类名/属性是否和代码中一致。
  • 处理文本格式差异:如果HTML里的年级是PK,0K(无空格),拆分时要改用split(",")。
  • 统一大小写:如果HTML里出现小写的pk,可以用g.upper()转换后再筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:30:43