PythonProject(1)vim的Hustoj插件
打算写一个vim的插件,或者emacs的插件。可以在编辑器里打比赛,看rank,交代码。总之相当于一个桌面版的hustoj
这是上学期就有的一个脑洞产物,昨天学了Python的爬虫,发现这个东西很有实现的可能嘛!
不知道能坚持多久,我这个三分钟热度。。。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
第一天
用fairfox+httpfox弄明白了hustoj的登陆,提交过程。//没有学过各种网络协议只能说一知半解吧,主要是参考文章写的 http://www.jb51.net/article/57161.htm
hustoj的登陆过程
先post一组数据到login.action,伪装成浏览器就会返回succes了
postdata = urllib.urlencode({
'username':'helica',
'password':'' #当然要插入你的密码!
})
hustoj的提交过程
post一组数据的sumit.action(这里提交的代码是用base64加密的),保持登陆的cookie(?没有测试不保持)
提交之后再给fetchstatus post一组数据,就可以返回你交的题的提交id了
再之后就是定时访问getResult 获得提交题的状态
当然,hustoj是开源的,我这样自己看数据包是不是太蛋疼了。。。
# -*- coding: utf-8 -*-
#
#---------------------------------------------------
# 爬虫:hustoj_spider
# 作者: helica
# 日期: 2015-8-12
# 语言: py2
#
#
#--------------------------------------------------- import urllib
import urllib2
import re
import cookielib global cookie
cookie = cookielib.CookieJar() def login():
global cookie
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) postdata = urllib.urlencode({
'username':'helica',
'password':''
}) headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11') opener.addheaders = [headers] req = urllib2.Request(
url = 'http://acm.hust.edu.cn/vjudge/user/login.action',
data = postdata
) result = opener.open(req) return result.read() def getInfo():
global cookie
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
opener.addheaders = [headers] req = urllib2.Request(url = 'http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66989#overview') result = opener.open(req)
return result.read() def SubCode():
global cookie
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
opener.addheaders = [headers] submitdata = urllib.urlencode({
'cid':'',
'num':'C',
'language':'',
'isOpen':'',
'source':'Ly9sZXQgbWUgZG8gYSB0ZXN0IHRvIGZpbmQgdGhlIHVybCBvZiB0aGUgYWRkIGkgc3ViIG15IGNvZGUKLy9pIHdhbnQgbWFrZSBhIHNwaWRlciBmb3IgbXkgdmltCi8vc28gdGhhdCBpIGNhbiBzdWJtaXQgY29kZSB2aWEgbXkgZWRpdG9yIFhE'
}) req = urllib2.Request(
url = 'http://acm.hust.edu.cn/vjudge/contest/submit.action',
data = submitdata
) result = opener.open(req) return result.read() def getStatus():
global cookie
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
opener.addheaders = [headers] print login()
#print getInfo()
print SubCode()
PythonProject(1)vim的Hustoj插件的更多相关文章
- vim配置及插件安装管理(超级详细)
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...
- vim配置及插件安装管理(超级详细)[转]
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...
- vim之pydiction插件
[vim之pydiction插件] It consists of three main files: python_pydiction.vim -- Vim plugin. complete-dict ...
- Vim扩展YouCompleteMe插件
在Vim中安装YouCompleteMe插件 一.安装前的说明: 1.确保vim版本>=7.4,若MAC OS,建议直接安装MacVim(8.0版本). ps:如果不想使用MacVim的GUI, ...
- vim配置文件和插件管理
本文通过总结零碎的资料总结而成,更多是去引导学习vim配置文件及插件使用. .vimrc配置文件,内容如下(备注清晰) "引入插件pathogen使用 execute pathogen#in ...
- vim代码格式化插件clang-format
title: vim代码格式化插件clang-format date: 2017-12-12 20:28:26 tags: vim categories: 开发工具 安装vim-clang-forma ...
- vim实战:插件安装(Vundle,NerdTree)
一:插件管理器Vundle 1.简介 Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件.插件管理器用于方便.快速的安装.删除.Vim更新插件.vim Vundle插件官方地址:h ...
- vim语法高亮插件编写
# vim语法高亮插件编写 编写vim语法高亮插件很简单,只需要编写两个文件.vim放到vim的安装目录下的目录就可以了. ## 输出------------------------------ sy ...
- vim 代码注释插件
参考: 1.http://www.vim.org/scripts/script.php?script_id=1218 2.http://www.dutor.net/index.php/2010/05/ ...
随机推荐
- [07] 使用注解完成IOC配置
1.扫描配置 之前使用的Spring的Bean管理都是通过xml的配置文件来操作的,在Spring3.0之后已经引入了注解形式,Spring可以在指定路径下进行扫描,寻找标注了@Component.@ ...
- Luogu P2522 [HAOI2011]Problem b
如果你做过[Luogu P3455 POI2007]ZAP-Queries就很好办了,我们发现那一题求的是\(\sum_{i=1}^a\sum_{j=1}^b[\gcd(i,j)=d]\),就是这道题 ...
- Luogu P2597 [ZJOI2012]灾难
一道非常综合的好题然后就莫名其妙地知道了动态LCA的求法 果然是ZJOI的题目,只能说这思路服了 首先我们发现每次操作只会灭绝一种动物,然后我们想一下就知道如果有\(n(n>=2)\)个食物的动 ...
- 电脑一直报PCIE BUS错误的原因
报错 新装Linux 系统后,每隔数分钟则报以下错误: AER:Corrected error received: 0000:00:1c:4 pcie bus error: severity=Corr ...
- Python 学习 第一篇:数据类型(数字,集合,布尔类型,操作符)
Python语言最常用的对象是变量和常量,常量的值是字面意思,其值是不可变的,变量的值是可变的,例如,123,"上海"是常量,而a=1,a=2,其中a是变量名.内置的核心数据类型有 ...
- copy constructor
copy constructor也分为trivial和nontrivial两种 如果class展现出bitwise copy semantics(按位拷贝语义),则不会构造出 copy constru ...
- Git push 时如何避免出现 "Merge branch 'master' of ..."
在使用 Git 的进行代码版本控制的时候,往往会发现在 log 中出现 "Merge branch 'master' of ..." 这句话,如下图所示.日志中记录的一般为开发过程 ...
- centos单机安装nginx、gitlab、nexus、mysql共存
思路就是不同系统设不同端口号,通过nginx做反向代理绑定不同域名. nginx 安装 1.安装pcre软件包(使nginx支持http rewrite模块)yum install -y pcreyu ...
- Python3出现"No module named 'MySQLdb'"问题-以及使用PyMySQL连接数据库
Python3 与 Django 连接数据库,出现了报错:Error loading MySQLdb module: No module named 'MySQLdb'.原因如下:在 python2 ...
- haproxy反向代理环境部署(http和https代理)
操作背景:前方有一台haproxy代理机器(115.100.120.57/192.168.1.7),后方两台realserver机器(192.168.1.150.192.168.1.151,没有公网i ...