[python] HDU自动登录提交代码程序
调了一个下午,被python的正则绊住了;在C#上运作好好的式子在python老是报错,原来python的断言式必须是固定长度的,像类似(?<=[^>].*?)的零宽度正回顾后发断言是不允许出现的,这点python做的没有C# 方便,弄得我只好分了好几个步骤来做.

__author__ = 'wuminye'
import time
import urllib
import urllib2
import cookielib
import re std = ['Queuing', 'Compiling', 'Running'] hostaddr = 'http://acm.hdu.edu.cn'
loginaddr = '/userloginex.php?action=login'
submaddr = '/submit.php?action=submit'
statusaddr = '/status.php' cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
#httpHandler = urllib2.HTTPHandler(debuglevel=1)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
header = {'User-Agent': 'IE10'} def login(username, password):
""" :rtype : object
"""
postData = {'username': username,
'userpass': password,
'submit': 'Sign In'}
postData = urllib.urlencode(postData)
request = urllib2.Request(hostaddr + loginaddr, postData, header)
response = urllib2.urlopen(request, timeout=10)
if response.getcode() != 200 and response.getcode() != 302:
print 'login web error!'
return False
ans = response.read()
if ans.find("Sign Out") == -1:
return False
return True def querystatus():
postData = {'user': 'wuminye',
'lang': 0,
'first': '',
'pid': '',
'status': 0}
postData = urllib.urlencode(postData)
request = urllib2.Request(hostaddr + statusaddr + '?' + postData, headers=header)
response = urllib2.urlopen(request, timeout=10)
if response.getcode() != 200 and response.getcode() != 302:
print 'query web error!'
return False
ans = response.read()
m = re.search('(?<=<td height=22px>).*?</td>(<td.*?</td>){8}(?=</tr>)', ans)
ans = '<td>' + m.group(0)
mylist = []
for i in range(0, 7):
m = re.search(r"(?<=<td).+?(?=</td>)", ans)
t = m.group()[1:]
n = t.find('>')
if n != -1:
t = t[n + 1:]
t = re.search('[^<]+', t)
mylist.append(t.group())
ans = ans[m.end() + 5:]
for i in range(0, 4):
ans = ans[ans.find('>') + 1:]
ans = re.search(r"[^<]+", ans).group()
mylist.append(ans)
return mylist def subbmit(pid, lan, code):
postData = {'problemid': pid,
'language': lan,
'usercode': code,
'submit': 'Submit'}
postData = urllib.urlencode(postData)
request = urllib2.Request(hostaddr + submaddr, postData, header)
response = urllib2.urlopen(request, timeout=10)
if response.getcode() != 200 and response.getcode() != 302:
print 'subbmit web error!'
return False
print 'Subbmit Done!'
ans = querystatus()
while ans[2] in std:
time.sleep(1)
print 'Status:', ans[2]
ans = querystatus()
print ans
[python] HDU自动登录提交代码程序的更多相关文章
- Ubuntu启动自动登录并启动程序
最近在研究Ubuntu,需要在系统启动之后自动登录,并且启动某个程序. 手上拿到的系统只有一个空桌面,其他嘛也没有,鼠标右键也不管用.于是借助自己的虚拟机研究发现,自动启动程序配置文件在: /home ...
- python模拟自动登录网站(urllib2)
不登录打开网页: import urllib2 request = urllib2.Request('http://www.baidu.com') response = urllib2.urlopen ...
- Python实现自动登录/登出校园网网关
学校校园网的网络连接有免费连接和收费连接两种类型,可想而知收费连接浏览体验更佳,比如可以访问更多的网站.之前收费地址只能开通包月服务才可使用,后来居然有了每个月60小时的免费使用收费地址的优惠.但是, ...
- Python简单的登录注册代码
#-*- coding: utf-8 -*- import hashlib # 定义数据库(声明字典) #注册登录的简单hash处理 db={} def get_md5(password): md5= ...
- python paramiko自动登录网络设备抓取配置信息
ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostn ...
- Python实现BBS自动登录并发帖
初学Python有了一段时间,寒假里又看了一些Web编程方面的知识,就写了一个实现bbs自动登录和发帖的Python脚本 由于本人学校BBS站首页使用js加载,貌似通过首页登录不大可行,然后就分析表单 ...
- 用python实现自动化登录禅道系统 设置定时器自动执行脚本
由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...
- C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录
最近学习C#网络编程中,想实现网页自动登录并提交GET/POST信息,再实现循环登录不断发送报文给服务器,服务器发送消息给客户端记录能登录的账户和密码,做到后面实现绕过验证码.动态抓取登录位置等,但由 ...
- python selenium模拟登录163邮箱和QQ空间
最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...
随机推荐
- Mac生存手册
最近刚从Linux转到了Mac系统上,感觉好的地方是再也不折腾了,什么GNOME, KDE, XFCE,各种发行版本都远离我而去了.当然Mac下很多好软件都是要付费的,我只能绕着走了: 1. 命令行, ...
- 【转】android 自定义ViewPager,修改原动画
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的 ...
- C:内存分配、内存中五大区
1.内存的划分 (从高到低依次是: 栈区 . 堆区 .全局静态区 . 常量区 . 代码区 )栈区是系统自动回收,堆区是我们手动回收 2. 栈区 在函数内部定义的局部变量和数组.都存放在栈区, ...
- Innodb的事务与日志 & JTA事务
InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的 通过 行多版本控制 MyISAM Innodb 事物支持 : 不支持 ...
- SQLServer获取随机数据
1.比较常见和好用的一种 SELECT TOP 10 *, NEWID() AS randomFROM tableORDER BY random --newid函数会随机生成一个guid,很长的一个字 ...
- Java 打印堆栈的几种方法
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- ArcSDE 10.2建立SDE服务
从ArcGIS 10.1开始,arcgis官方推荐以直连方式连接SDE,因此在SDE安装时不再自动安装SDE服务,以下是手动安装SDE服务的方法 环境 服务端: oracle 11.2 64位,Arc ...
- cdoj 31 饭卡(card) 01背包
饭卡(card) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/31 Des ...
- iOS xcode8提交 iOS10 “此构建版本无效” (已解决)
近期上传应用,遇到了"此构建版本无效"的问题,如图 网查了一下,解决了这个问题:(注意:先不要急着怀疑是网络问题,重新提交,先检查问题,别问我怎么知道的...) 1:iOS10 之 ...
- CSS 居中大全【转】
我看最近微博流行 CSS 居中技术,老外码农争相写相关的文章,一篇赛一篇的长啊,我把几篇归纳总结了一下,算是笔记. 孔乙己曾说:“茴香豆的回字有四种写法”,万一哪天有个面试官问你:“居中一共有几种写法 ...