Python爬取SDUTOJ比赛提交代码及批量提交(爬虫(伪))

OJ系统爬虫总结 背景 最近导师让我帮他把OJ系统上的学生代码导出来,怎知系统并没有一键导出的功能,无奈只能对着百度众多繁杂的教程咬咬牙爬虫,折腾了1天半总算搞出来交差了。 需求 1.提取验证码 2.模拟登陆 3.提取学生账号(学号)stuID、运行编号runID、题目编号pID.,构成学生代码提交页面的链接link 4.根据链接link提取学生提交的代码 5.匹配merge学号和学生姓名 6.保存... 阅读详情

需求:

  • 把自己之前在contest里面的代码提取出来。
  • 实现批量提交contest和problem里面的题目。
  • -

过程:

总共大概花了4个小时,一晚上,一个类一个文件的方法写起来真的爽,一晚上没停住手。
自己首先写的是下载器,首先明确需求。

  • 可以模拟登陆。
  • 可以post请求。
  • 可以下载网页。
  • 为了省事,把提交题目的功能也整合里面了。

代码如下,实现起来没啥困难,毕竟已经是轻车熟路了。

# coding:utf8
import  urllib2
import cookielib
import urllib

class Down(object):

    def __init__(self):
        #初始化常用网址
        self.login_url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Login/login'
        self.home_url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home'
        self.submit_url = 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Solution/submitsolution/pid/1110.html'

        #安装cookie处理
        cj = cookielib.CookieJar()
        cookie_support = urllib2.HTTPCookieProcessor(cj)
        opener = urllib2.build_opener(cookie_support)
        urllib2.install_opener(opener)

        #初始化cookie
        home_temp = urllib2.urlopen(self.home_url)

        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36',
            'Referer': 'http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Login/login',
            'Host': 'acm.sdut.edu.cn'}

        self.login()

    def post(self, url, post_data = None):
        #下载网页和POST请求
        if post_data is None:
            request = urllib2.Request(url, headers = self.headers)
            response = urllib2.urlopen(request)
            return response.read()
        else:
            post_data = urllib.urlencode(post_data)
            request = urllib2.Request(url, post_data, self.headers)
            response = urllib2.urlopen(request)
            return  res
利用Python登录学校OJ爬取AC代码 之前用Python爬取了Toj的题目主干——简单Python爬虫练习,并以此作为Python爬虫的入门实验,待我Python能力有所长进后,就想到或许可以使用Python把自己之前提交的AC代码全部爬下来,这也许会很有趣。 立即下载

相关推荐

submit:一个将源文件提交给OJ的python脚本-python source file

提交 一个将源文件提交给OJ的python脚本 用法:#./sb.py Ojname Problemid源文件

VisionPro九点标定实战:从相机拍照到机器人精准抓取的完整流程

本文详细介绍了VisionPro九点标定技术在工业自动化中的应用,从相机拍照到机器人精准抓取的完整流程。通过硬件配置、标定步骤和实战技巧的解析,帮助工程师实现高精度视觉引导系统,提升生产效率。特别适合需要解决二维图像坐标与物理空间转换问题的自动化项目。

weixin_30664051的博客 406

高德地图爬虫

高德地图爬虫 工具:Pycharm,win10,Python3.6.4 1.需求分析 这篇爬虫和上一篇百度地图爬虫要求一样,百度地图爬虫我发现有一个auth参数会一直变化,一旦变化则获取的数据是不准确的,所以我上高德地图看了一下,高德地图没有这个反爬机制。但是高德地图大概爬取120个页面就会跳一次验证码,我这里是通过换IP解决这个问题的。 2.数据准备 同样我们需要全国地级市信息,用之前...

123的博客 1万+

CS1237卡尔曼滤波实战:如何用24位ADC实现电子秤级精度?

本文详细介绍了如何利用CS1237 24位ADC芯片结合卡尔曼滤波算法实现电子秤级精度测量。通过解析CS1237硬件特性、卡尔曼滤波原理及STM32驱动优化,提供了一套完整的解决方案,包括多通道支持、驱动代码实现和性能调优技巧,适用于工业测量和嵌入式开发领域。

linux的博客 1087

统计信号处理基础 习题解答1-1

1-1:在雷达习题中,双程延时时间的估计量具有PDF τ0~Nτ0,στ02,其中τ0是真值。假如要估计距离请提出一种估计量R,并求它的PDF。然后,确定标准偏差στ0,使得距离估计值的99%在真值的100m以内,对电磁波传播速度取c=3×108m/s。 解答: 问题1: 由于电磁波传播速度c,信号可观察的双程传播延时τ0和双程传播距离τ0满足关系: R=cτ02 因此可采用如下估计量: R=cτ02 问题2: 由于τ0满足正态分布,且: Eτ0=τ0 varτ0=στ02 那么: E

weixin_43270276的博客 2806

EWM与SAP ERP的数据集成

1、EWM与 SAPERP的无缝集成-基础数据&业务交易数据 2、SAP ERP设置:连接SAP ERP和EWM必须设置应用程序连接支持-ALE(Application Link Enabling) 3、ERP - EWM仓库数据集成: SAP ERP需要设置配置信息,连接ERP和EWM之间的库存管理应用,基于工厂+库存地点对应一个仓库号来进行配置; 在ERP中需要创建一个中间虚拟仓库,代表ERP仓库;“中间虚拟”仓库创建之后,工厂+库存地点的信息...

weixin_43899798的博客 3797

(实战)[re:Invent 2018]-001:赛道分析-(致敬1024)

打印log

Rainbow 2780

别再只看读写速度了!聊聊手机闪存eMMC、UFS3.1和SSD背后的功耗与体积玄学

本文深入探讨手机闪存技术eMMC、UFS3.1和SSD在功耗与体积设计上的关键差异。通过对比接口技术、封装工艺和温度管理,揭示移动存储如何在有限空间内平衡性能与能效,为消费者提供选购参考。重点关注UFS3.1的差分信号设计和全双工架构带来的显著优势。

weixin_27061475的博客 448

39-高级优化技术:指令调度与乱序执行 - 手把手教你手写CPU

本文介绍了现代处理器设计中提高指令级并行性(ILP)的两种关键技术:指令调度和乱序执行。指令调度分为静态调度(由编译器完成)和动态调度(由硬件完成),后者能更好适应运行时情况但复杂度更高。乱序执行通过动态重排指令顺序提高硬件利用率,其核心组件包括重排序缓冲区、保留站和寄存器重命名。文章提供了保留站的Verilog实现示例,并分析了不同优化技术在性能、硬件开销和功耗方面的权衡。最终指出,CPU设计需根据性能、功耗等需求选择合适的优化技术。

2301_79143213的博客 85

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: Python爬虫基础细节(urllib+cookielib+BeautifulSoup)
下一篇: 数组计算机(线段树+水题)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值