HUSTO半自动化拉取学生代码

[云服务器6] 使用HustOJ搭建一个在线OJ系统 至此,你已经成功搭建了一个HustOJ在线评测系统。你可以根据需要进一步配置和优化系统,加上自己的题目等。希望这篇博客能帮助到你,祝你在编程的道路上越走越远! 阅读详情

HUSTOJ 代码存档

需求

研究生教务需要将课程在HUSTOJ上所有学生的练习题打包存档。

已知条件

有HUSTOJ管理员的账号

目标

拉取所有的学生代码,按照
"student_id_submit_id"命名保存

技术路线

  • python openpyxl 读取学生花名册
  • python re 正则提取
  • python request 抓取网页数据并保存

实现代码

抓取网页数据
import requests
import re
# 定义目标网页的URL

def saveOJ(number):

    # 访问地址
    url = "http://10.91.145.2/showsource.php?id={}".format(number) 
    
    print(url)
    # 定义要设置的Cookie
    # 在登陆之后从F12检查拿到cookies
    cookies = {"PHPSESSID": "xxxxxxxxx"}

    # 发送HTTP GET请求获取页面内容
    response = requests.get(url,  cookies=cookies)


    # 检查是否成功获取页面内容
    if response.status_code == 200:
        # 使用response.text获取页面的文本内容
        page_content = response.text
        
        # 使用正则表达式提取 "User: 202121xxxxx" 后面的数字部分
        # print(page_content)
        match = re.search(r'User: (\d+)', page_content)
        if match:
            user_id = match.group(1)
            html_filename = f"student_id_{user_id}_submit_id_{number}.html"
            
            
            # 将内容保存到文件中
            with open(html_filename+".html", "w", encoding="utf-8") as file:
                file.write(page_content)
                print("页面内容已保存到page_content.html文件中。")
        else:
            print("未找到匹配的用户ID。")
            
            # 将内容保存到文件中
            with open("not_fund_{iid}.html", "w", encoding="utf-8") as file:
                file.write(page_content)
                print("页面内容已保存到not_found.html文件中。")
            
    else:
        print(f"无法获取页面,状态码:{response.status_code}")
        
for number in range(155951,156576):   
    saveOJ(number)

检查是否有花名册中学生未提交作业


import os
from openpyxl import load_workbook

# 获取当前目录
current_directory = os.getcwd()
subdirectory = "期末"
current_directory = os.path.join(current_directory, subdirectory)

# 读取Excel文件
excel_file_path = 'score.xlsx'  # 替换为你的Excel文件路径
wb = load_workbook(filename=excel_file_path, read_only=True)

# 选择工作表
sheet = wb['总评']  # 替换为你的工作表名称

# 提取带有学生名字的那一列
for row in sheet.iter_rows(min_row=2, max_row=59, min_col=7, max_col=7):
    
    # 获取单元格的值
    target_value = cell = row[0].value

    # 列出当前目录中的所有文件名
    file_names = os.listdir(current_directory)

    # 检查G2单元格的值是否在文件名中出现
    if any(target_value in file_name for file_name in file_names):
        print("")
        # print(f'"{target_value}" 出现在当前目录的文件名中。')
    else:
        print(f'"{target_value}" 未出现在当前目录的文件名中。')

# 关闭Excel文件
wb.close()

剔除HUSTOJ拉取下来的其他班的学生

在第一步拉取时,可能会包含混杂其他班的学生,因此需要去除

import os
import re
from openpyxl import load_workbook

# 获取当前目录
current_directory = os.getcwd()
subdirectory = "作业#3"
current_directory = os.path.join(current_directory, subdirectory)

# 读取Excel文件
excel_file_path = 'score.xlsx'  # 替换为你的Excel文件路径
wb = load_workbook(filename=excel_file_path, read_only=True)

# 选择工作表
sheet = wb['总评']  # 替换为你的工作表名称
stu_ids = []

for row in sheet.iter_rows(min_row=2, max_row=59, min_col=6, max_col=6):
    
    # 获取单元格的值
    target_value = cell = row[0].value

    stu_ids.append(target_value)


# 列出当前目录中的所有文件名
file_names = os.listdir(current_directory)
    

# 逐个排查
for file_name in file_names:
    
    # 从file_name 中提取 id
    match = re.search(r'student_id_(\d+)', file_name)
    
    if match:
        user_id_current = match.group(1)
        
        # 检查user_id是否在xslx文档之中
        if not any(user_id_current in uid for uid in stu_ids):   
            file_path = os.path.join(current_directory, file_name)
            os.remove(file_path)
            print(file_name + " should not appear, removed")
                
        

# 关闭Excel文件
wb.close()

3天干完6个月的活,Claude把模型搬上AMD 一条挺刺激的消息:Anthropic 给投资人的材料里有一张幻灯片,写着它的 Claude Mythos Preview 只花了大约​,就摸清了怎么让另一个 Claude 模型在 AMD 的 MI355X 上跑起来。同一处还写了个对照数字:过去给一块新芯片做推理适配,通常要几十名工程师、​。3 天对 6 个月,这个比值太扎眼,当天中文互联网上就冒出一堆「英伟达的护城河塌了」的说法。我把能翻到的材料都翻了一遍,越看越觉得,塌掉的那一小块是真的,可塌的位置和很多人想的不一样。 阅读详情

相关推荐

如何处理动态语言(Python / JS)的“隐形”调用链?

本文揭示动态语言(Python/JS)中静态AST解析导致调用链“断链”的核心问题,提出通过运行时追踪补全图谱的解决方案。基于Code-Graph-RAG的cgr trace机制,分别利用pytest插件与V8 Profiler捕获真实调用路径,将动态边合并至静态图谱,并在权重体系中提升动态边优先级。实践表明,该方法可显著提升图谱覆盖率,实现“结构+行为”双视角理解代码,为MCP与Rerank系统提供可靠支持。

xianyinsuifeng的博客 419

搭建hustoj过程简述

首先感谢阿里云的云翼计划,9.9元一个月的服务器 云翼计划 我选择的是32位ubuntu,看不到图形界面会很烦,于是我安装了一下vncserver VNC安装说明,尽管没有达到链接中图示的效果,也勉强可以用了。 hustoj安装步骤 1.安装mysql apt-get install mysql-server mysql-client 安装的过程会有一个框,输入sql密码,按TAB切换到

AC_dream 1万+

Claude Desktop Cowork国内实操指南:本地文件自动化办公

大语言模型正从‘问答式AI’迈向‘执行型协作者’,其核心能力在于直接操作本地文件、调用系统工具并嵌入真实工作流。Claude Desktop的Cowork模式正是这一范式的代表,它通过轻量沙箱VM实现对Excel、PPT、PDF、音视频等办公资产的读写与处理,无需手动编码即可完成数据清洗、会议纪要生成、自动化报告输出等任务。技术价值体现在权限可控、环境隔离、结果可交付;典型场景覆盖行政文秘的文档流转、销售运营的数据分析、开发者的脚本调试与环境验证。本文聚焦国内用户高频卡点——网络链路、系统权限与工作流断层,

weixin_30617737的博客 468

centos7中安装hustoj支持python语言安装方法

现象:hustoj中选择python语言编写代码,提交系统后显示“答案错误0”定位方法: 使用judge_client调试问题问题,比如提交OJ的题目编号为2924,格式为: sudo judge_client run_id file_id/home/judge -debug 其中run_id为你需要调试的运行id,file_id为你需要把调试过程中产生的文件放在编号为几的run目录中,假...

catchupwith2的博客 975

Jetson AGX Orin 部署 JetPack:从依赖缺失到系统升级的完整排障指南

本文详细介绍了在Jetson AGX Orin开发板上部署JetPack SDK的完整排障指南,包括解决依赖缺失、系统升级和常见错误处理。通过确认硬件版本、配置正确的软件源、执行系统升级和安装核心组件等步骤,帮助开发者顺利完成JetPack的安装与配置,确保AI开发环境的稳定运行。

weixin_29172963的博客 160

从Oracle迁移数据到Hadoop

目标:把Oracle 下的数据文件迁移到 Hadoop , 数据表都是上亿条,每个数据表的空间都超过100G。 关键是建立数据文件是UTF8格式,这样数据中的汉字在Hadoop 里显示才正常。 平台:CentOS 6.10 工具:Python 2.7 cx_Oracle 库 Oracle10.2.0.4.0 Hadoop 2.7.2-transwarp-5.2.1 1. 查看表...

预则立 4237

HUSTOJ随笔3-配置文件

经常有用户询问如何开发一些功能,实际上这些功能都已经有,或者部分实现了,只需要修改配置文件就可以使用。       hustoj有两个配置文件,互相独立,分别供core和web使用。      core(judged/judge_client)使用的配置文件是judge.conf,默认位置/home/judge/etc,内容如下      注意core没有识别引号和注释的能力,所以不要自行增

zhblue的专栏 1万+

支付系统保证可靠性的秘诀 ----- 订单的补偿和补单

文章目录WHAT? 前言WHY? 为什么要用多级缓存?HOW 怎么做?方案 版本1:数据库存储专线配置通过优先级进行动态上下线方案 版本1 劣势:方案 版本2 :本地缓存替代数据库方案 版本2 劣势:方案 版本3:分布式缓存做自动补偿方案 版本3 总结:Where 分布式多级缓存还能用在哪些地方?总结 WHAT? 前言 刚入职场的时候觉得支付宝等第三方支付系统好强大,要保证这么多的交易不能错,也不能重复还要保证正确的扣钱,直到后面接触订单系统以及第三方支付公司的核心交易系统后才真正窥探到了支付系统的核心

boboaisisi的专栏 3534

HUSTOJ运维常见的一些问题解决

前言 最近在维护NYOJ2.0的一些BUG,由于判题机采用的是HUSTOJ的判题机,所以就必须了解一下HUSTOJ的源码。 HUSTOJ的源码开源GitHub,我们可以clone下来自己部署一个。地址是:hustoj 首先是几个个重要的配置文件的位置: /home/judge/etc/judge.conf #判题端配置文件 /home/judge/src/web/include/db_info....

riba2534的博客 4500

因素空间与可拓学的互补性分析及问题处理融合模型

随着知识与信息数量的快速增长以及信息获取便利性的增加,企事业组织所面临的内外部环境更加复杂,业务问题呈现非线性、不确定性、多维化和实时交互性等特点。业务环境的高度不确定性和面临问题的开放性,人工智能与问题处理的深入研究迫切需要有一种自觉地为信息科学与智能科学服务的定性定量相结合的智能数学模型。经典数学适于描述物质世界的数量与空间关系,智能数学必须能描述信息拓展与智能机理。

weixin_70923796的博客 261

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 110

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

weixin_53637133的博客 178

家人们,谁懂啊,dify又报错了:[models] Bad Request Error, 500 Server Error:Internal Server Error for url: http://

本来今天下班,坐在地铁上,一身劳累。一起上班的小兄弟儿,突然甩来一张截图:老大!dify又报错了。没办法,一到家就打开电脑,开始排查。

xiezhipu的博客 883

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 425

RK3588网卡出现丢包或者带宽不足的问题验证排查

注意除了有最大的TCP数据接收缓冲,还有/proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲可以调整,这里暂时没用到,针对具体需要可适当调整。比如把ethx接口中断从默认的cpu0迁移到其它cpu,例如将eth0中断234移到cpu7 (10是16进制, cpu0 =3588的cpu有8个核,4个A55(小核)+4个A76(大核),可以找到对应中断 将中断从默认cpu0核切到cpu7。tcp_rmem:单位是字节,接收缓存区大小,缓存从对端接收的数据,后续会被应用程序读取。

Android/Linux驱动开发传帮带学习,让驱动入门门槛更低! 2030

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 241

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 427

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

yolo 和 deft 算法的区别

你应该是打错了:是,不是 defrat;

曾大强博客 257

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 269

两张表合并之后,行数悄悄多了一倍

pandas merge 行数异常膨胀源于右表键不唯一,导致数据静默复制。实测显示,未聚合的右表(756行)与左表合并后行数增至504行,合计膨胀3.5倍,但无报错。validate 参数仅在检查键唯一性时有效,one_to_one 和 many_to_one 可拦截问题,但需结合 duplicated() 前置检查。正确做法为先按键聚合右表,再合并,避免重复。建议合并前后核对行数、合计,并使用 indicator=True 排查匹配情况,确保数据一致性。

patrickstar231的博客 227

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级 备考:莫队算法离线区间查询详解

备赛进行时:第十八届蓝桥杯软件赛报名已于 2026-10-08 10:00 开启、12-18 14:00 截止,省赛定在 2027-04-10(C/C++·Python 程序设计 9:00–13:00);中国电子学会 2026 年 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名 9/23–12/2 16:00、统考 12-12;全国青少年信息素养大赛 2026—2027 赛季算法应用主题赛也已进入复盘练兵窗口。

IT_Scratch的博客 170

我用 200 行代码写了个“代码屎山检测器“,扫完公司的老项目后我沉默了

这个工具不能帮你把屎山铲平,但至少能让你知道自己面对的是多大的山,也能在代码评审时用数据说话——“这个 PR 把圈复杂度从 12 推到了 18,能不能拆一下?毕竟,不能量化的东西,就没法改进。

xixiaoyunya的博客 251

智慧农业实战:育秧车间秧盘计数与苗情分级的Python实现

首先,建立统一的数据结构,保存每盘秧苗的编号、批次、覆盖度、叶色得分和播种天数。A = "壮苗"B = "合格苗"C = "弱苗"@dataclassdays: int。

荆棘鸟智能的博客 120

智叟云集-手机证据抓取系统的工程结构与应用入口

本文系统阐述手机证据抓取系统的工程结构与应用入口,涵盖四大层面:工程目录划分(Android、Python服务、Web页面、测试与构建工具);Android组件通过Manifest声明可启动页面,主界面由MainActivity管理;Python服务通过run.py解析参数并启动FastAPI应用,支持远程访问;浏览器页面采用HTML/CSS/JS分离架构,静态资源通过路径关联,实现动态交互。各模块分工明确,协同构建可运行的采集系统。

2301_77178996的博客 237

Java Arrays.asList 常见坑详解|UnsupportedOperationException、数组联动、基本类型 bug

解析 Arrays.asList 常见开发陷阱,演示 UnsupportedOperationException、底层数组引用共享、基本类型数组问题,区分 Arrays 内部 ArrayList 与 java.util.ArrayList,给出数组转 List 的各种场景正确代码。

weixin_42617033的博客 494

【随笔】KV缓存量化:省下的显存,要付出多少数值误差

用可运行量化器解释位宽、比例信息、分组和离群值的关系,核算KV缓存实际载荷,并给出Transformers配置与容量、延迟、质量验收方法。

code2cat的博客 470
上一篇: 交换模式:存储转发与直通交换
下一篇: 根据基站位置区识别码(LCA)和小区识别(CI)获取经纬度
groundnut888
博客等级 码龄6年 59粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值