如何用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
相关产品推荐
相关产品推荐

