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

如何用Selenium和BeautifulSoup精准提取HTML中的成绩数据

解决方案:精准提取成绩数据

你当前代码用soup.find_all()遍历所有标签打印文本,肯定会输出整个页面内容。要精准拿到目标成绩(比如69.00%),可以根据目标HTML的结构特征定位元素:

方法1:通过父容器定位提取

目标成绩在class="col-md-2"的div容器里,每个成绩块嵌套在class="text-align-center"的子div中。先定位父容器,再逐个提取成绩:

# 替换原代码中从for tag in soup.find_all():开始的部分
grade_container = soup.find('div', class_='col-md-2')
if grade_container:
    # 获取所有成绩区块
    grade_blocks = grade_container.find_all('div', class_='text-align-center')
    for block in grade_blocks:
        # 直接提取完整成绩文本(自动拼接数字和%)
        full_score = block.find('h1').get_text(strip=True)
        # 提取对应的统计周期
        period = block.find('h6').get_text(strip=True)
        print(f"{period}: {full_score}")

方法2:直接用CSS选择器批量提取

如果页面里只有这两个成绩模块,也可以用CSS选择器一次性定位所有目标元素:

# 替换原代码中从for tag in soup.find_all():开始的部分
# 匹配所有成绩文本和对应的周期
score_elements = soup.select('div.col-md-2 div.text-align-center h1')
period_elements = soup.select('div.col-md-2 div.text-align-center h6')

# 一一对应输出
for score, period in zip(score_elements, period_elements):
    print(f"{period.get_text(strip=True)}: {score.get_text(strip=True)}")

注意事项

  • BeautifulSoup里用class_指定类名,避免和Python关键字class冲突
  • get_text(strip=True)会自动去除文本前后的空格和换行,直接拿到整洁的成绩内容
  • 尽量用更具体的选择器组合,避免定位到页面其他无关元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:06:52