打算写一个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插件的更多相关文章

  1. vim配置及插件安装管理(超级详细)

    1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...

  2. vim配置及插件安装管理(超级详细)[转]

    1 写在前面   Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...

  3. vim之pydiction插件

    [vim之pydiction插件] It consists of three main files: python_pydiction.vim -- Vim plugin. complete-dict ...

  4. Vim扩展YouCompleteMe插件

    在Vim中安装YouCompleteMe插件 一.安装前的说明: 1.确保vim版本>=7.4,若MAC OS,建议直接安装MacVim(8.0版本). ps:如果不想使用MacVim的GUI, ...

  5. vim配置文件和插件管理

    本文通过总结零碎的资料总结而成,更多是去引导学习vim配置文件及插件使用. .vimrc配置文件,内容如下(备注清晰) "引入插件pathogen使用 execute pathogen#in ...

  6. vim代码格式化插件clang-format

    title: vim代码格式化插件clang-format date: 2017-12-12 20:28:26 tags: vim categories: 开发工具 安装vim-clang-forma ...

  7. vim实战:插件安装(Vundle,NerdTree)

    一:插件管理器Vundle 1.简介 Vundle是vim的一个插件管理器, 同时它本身也是vim的一个插件.插件管理器用于方便.快速的安装.删除.Vim更新插件.vim Vundle插件官方地址:h ...

  8. vim语法高亮插件编写

    # vim语法高亮插件编写 编写vim语法高亮插件很简单,只需要编写两个文件.vim放到vim的安装目录下的目录就可以了. ## 输出------------------------------ sy ...

  9. vim 代码注释插件

    参考: 1.http://www.vim.org/scripts/script.php?script_id=1218 2.http://www.dutor.net/index.php/2010/05/ ...

随机推荐

  1. XML转换为对象/Javabean

    將XML轉換為對象 /** * xml转换成JavaBean * @param xml * @param c * @return */ public static <T> T conver ...

  2. 通过chrome浏览器分析网页加载时间

    今天趁着下班的时间看了下chrome浏览器的网页加载时间分析工具和相关文档,简单写点儿东西记录一下. 以百度首页加载为例,分析下一张图片1.jgp(就是背景图)的加载时间 看右侧的Timing标签,从 ...

  3. mysql的聚簇索引与非聚簇索引的简短总结

    [原文]https://www.jianshu.com/p/72763d47aa1a 在mysql数据库中,myisam引擎和innodb引擎使用的索引类型不同,myisam对应的是非聚簇索引,而in ...

  4. SpringMVC之编程式校验

    1.编程式效验需要实现Validator接口,针对模型类进行校验2.jar包 3.项目测试结构 4.StudentModel.java(模型类) package com.wt.entity; publ ...

  5. 绍一集训Round#1

    到了之后看题,T1一看发现真熟悉,和之前做的一道题真的像,然后内心: 这里是绍一啊,不可能就出这么简单的题 我题意没理解错啊,这不是单独计算每条边的贡献么 维护一个人数的大小,然后直接搞一波就可以了吧 ...

  6. [Partition][Index]对于Partition表而言,是否Global Index 和 Local Index 可以针对同一个字段建立?

    对于Partition表而言,是否Global Index 和 Local Index 可以针对同一个字段建立? 实验证明,对单独的列而言,要么建立 Global Index, 要么建立 Local ...

  7. 做完小程序项目、老板给我加了5k薪资~

    大家好,我是苏南,今天要给大家分享的是最近公司做的一个小程序项目,过程中的一些好的总结和遇到的坑,希望能给其他攻城狮带来些许便利,更希望能做完之后老板给你加薪- 今天是中秋节的第一天,假日的清晨莫名的 ...

  8. keepalived概述

    一.HA集群中的相关术语 1.节点(node) 运行HA进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和高可用软件服务,在高可用集群中,节点有主次之分,分别称之为主节 ...

  9. 小程序encryptedData

    准备知识: Base64编解码 AES算法.填充模式.偏移向量 session_key会话密钥,以及怎么存储和获取 以上3点对于理解解密流程非常重要. 根据官方文档,我梳理了大致的解密流程,如下: 小 ...

  10. vue 动态修改 css

    <div v-for="i in resultDate" v-if="i.ProjectId>='4'" @click=EveyTesttInfo( ...