打算写一个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. Java多线程编程模式实战指南一:Active Object模式(下)

    Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...

  2. Tensorflow[源码安装时bazel行为解析]

    0. 引言 通过源码方式安装,并进行一定程度的解读,有助于理解tensorflow源码,本文主要基于tensorflow v1.8源码,并借鉴于如何阅读TensorFlow源码. 首先,自然是需要去b ...

  3. 从一些代码方法中,去学习C#委托

    先来看看下面一个类中的一些方法: class Bc { public double Add(double number1, double number2) { return number1 + num ...

  4. 在属性property做一些简单的验证

    开发C#的程序,写到属性property时,我们可以在Set方法中做一些简单的规则验证: 如下面,Insus.NET写一个Age属性,只允许用户输入10以内的数字: class AA { privat ...

  5. .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

    前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...

  6. Android恶意样本数据集汇总

    硕士论文的研究方向为Android恶意应用分类,因此花了一点时间去搜集Android恶意样本.其中一部分来自过去论文的公开数据集,一部分来自社区或平台的样本.现做一个汇总,标明了样本或数据集的采集时间 ...

  7. sudo 与输出重定向

    本文介绍如何使用 sudo 将输出重定向到当前用户没有权限的文件.注意:本文中 demo 的演示环境为 ubuntu 18.04. Permission denied 问题 如果当前用户没有某个文件的 ...

  8. TRIO-basic指令--MOVEMODIFY

    Syntax: MOVEMODIFY(position) Parameters: position: Absolute position for the current move to complet ...

  9. 时间复杂度O(n^2)和O(nlog n)差距有多大?

    0. 时间复杂度 接触到算法的小伙伴们都会知道时间复杂度(Time Complexity)的概念,这里先放出(渐进)时间复杂度的定义: 假设问题规模是\(n\),算法中基本操作重复执行的次数是\(n\ ...

  10. 代码规范(RL-TOC)用更合理的方式写 JavaScript

    代码可以改变世界 不规范代码可以毁掉世界 只有先学会写规范的代码,才可以走的更远 编程语言之间有很多编程规范都是通用: 命名 不要用语言不明的缩写,不用担心名字过长,名字一定要让别人知道确切的意思; ...