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

如何在Python与Selenium中用整数列表替代range函数查询学生成绩

问题描述

我有一个用于查询学生成绩的Python脚本,目前使用range函数遍历连续学号(示例代码如下),但我希望改用自定义的整数列表来替代range函数,借助Selenium完成学号输入与成绩查询操作。我是新手,尚未进行任何尝试,恳请指导。

原示例代码:

# put rollnumber without zero like
# your number 0477593 then
# put 477593 upto XXXXX.
start_rollNum = 2245000092
end_rollNum = 2249553367

# put range of rollnumber
for i in range(start_rollNum, end_rollNum ):
解决方案

1. 定义自定义学号列表

直接把需要查询的学号整理成整数列表即可,想加多少就加多少:

# 自定义学号列表,把要查的学号都放这里
custom_roll_numbers = [2245000092, 2245000095, 2249553367, 2246000100]

2. 安装Selenium与浏览器驱动

先安装Selenium包,打开命令行执行:

pip install selenium

另外需要安装对应浏览器的驱动(比如ChromeDriver),要确保驱动版本和你的浏览器版本匹配,下载后放到Python安装目录或者系统PATH中,否则浏览器无法正常启动。

3. 完整查询脚本示例

下面是完整的可运行脚本,其中的元素定位需要你根据实际查询页面的HTML结构调整:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 自定义学号列表
custom_roll_numbers = [2245000092, 2245000095, 2249553367]

# 启动Chrome浏览器
driver = webdriver.Chrome()

try:
    # 打开成绩查询页面,替换成你实际使用的URL
    driver.get("https://xxx.com/score-query")

    # 遍历每个学号执行查询
    for roll_num in custom_roll_numbers:
        # 等待学号输入框加载完成,替换成页面输入框的实际定位器
        roll_input = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "rollnumber-input"))
        )
        # 清空输入框并输入当前学号
        roll_input.clear()
        roll_input.send_keys(str(roll_num))

        # 等待查询按钮可点击,替换成页面按钮的实际定位器
        search_btn = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, "//button[text()='查询成绩']"))
        )
        search_btn.click()

        # 等待成绩结果加载并提取,替换成页面成绩元素的实际定位器
        try:
            score_element = WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.CLASS_NAME, "score-result"))
            )
            print(f"学号 {roll_num} 的成绩:{score_element.text}")
        except:
            print(f"学号 {roll_num} 查询失败或无成绩记录")

        # 返回查询页面,继续处理下一个学号
        driver.back()

finally:
    # 无论成功与否,最后关闭浏览器
    driver.quit()

关键注意事项

  • 元素定位需调整:打开查询页面按F12,查看输入框、查询按钮、成绩显示区域的HTML属性,替换代码中对应的By.ID、By.XPATH等定位内容。
  • 使用等待机制:用WebDriverWait等待元素加载完成再操作,比直接用time.sleep()更稳定,避免因页面加载慢导致报错。
  • 反爬应对:避免过于频繁的请求,必要时添加短时间等待,防止被网站限制访问。
  • 异常扩展:代码中仅做了基础异常捕获,若遇到验证码、网络波动等情况,可自行补充对应处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:54:58