打算写一个vim的插件,或者emacs的插件。可以在编辑器里打比赛,看rank,交代码。总之相当于一个桌面版的hustoj

这是上学期就有的一个脑洞产物,昨天学了Python的爬虫,发现这个东西很有实现的可能嘛!

不知道能坚持多久,我这个三分钟热度。。。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

第一天

用fairfox+httpfox弄明白了hustoj的登陆,提交过程。//没有学过各种网络协议只能说一知半解吧,主要是参考文章写的 http://www.jb51.net/article/57161.htm

  hustoj的登陆过程

  先post一组数据到login.action,伪装成浏览器就会返回succes了

  

  1. postdata = urllib.urlencode({
  2. 'username':'helica',
  3. 'password':'' #当然要插入你的密码!
  4. })

  hustoj的提交过程

  post一组数据的sumit.action(这里提交的代码是用base64加密的),保持登陆的cookie(?没有测试不保持)

  提交之后再给fetchstatus post一组数据,就可以返回你交的题的提交id了

  再之后就是定时访问getResult 获得提交题的状态

当然,hustoj是开源的,我这样自己看数据包是不是太蛋疼了。。。

  1. # -*- coding: utf-8 -*-
  2. #
  3. #---------------------------------------------------
  4. # 爬虫:hustoj_spider
  5. # 作者: helica
  6. # 日期: 2015-8-12
  7. # 语言: py2
  8. #
  9. #
  10. #---------------------------------------------------
  11.  
  12. import urllib
  13. import urllib2
  14. import re
  15. import cookielib
  16.  
  17. global cookie
  18. cookie = cookielib.CookieJar()
  19.  
  20. def login():
  21. global cookie
  22. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
  23.  
  24. postdata = urllib.urlencode({
  25. 'username':'helica',
  26. 'password':''
  27. })
  28.  
  29. headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
  30.  
  31. opener.addheaders = [headers]
  32.  
  33. req = urllib2.Request(
  34. url = 'http://acm.hust.edu.cn/vjudge/user/login.action',
  35. data = postdata
  36. )
  37.  
  38. result = opener.open(req)
  39.  
  40. return result.read()
  41.  
  42. def getInfo():
  43. global cookie
  44. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
  45. headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
  46. opener.addheaders = [headers]
  47.  
  48. req = urllib2.Request(url = 'http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66989#overview')
  49.  
  50. result = opener.open(req)
  51. return result.read()
  52.  
  53. def SubCode():
  54. global cookie
  55. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
  56. headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
  57. opener.addheaders = [headers]
  58.  
  59. submitdata = urllib.urlencode({
  60. 'cid':'',
  61. 'num':'C',
  62. 'language':'',
  63. 'isOpen':'',
  64. 'source':'Ly9sZXQgbWUgZG8gYSB0ZXN0IHRvIGZpbmQgdGhlIHVybCBvZiB0aGUgYWRkIGkgc3ViIG15IGNvZGUKLy9pIHdhbnQgbWFrZSBhIHNwaWRlciBmb3IgbXkgdmltCi8vc28gdGhhdCBpIGNhbiBzdWJtaXQgY29kZSB2aWEgbXkgZWRpdG9yIFhE'
  65. })
  66.  
  67. req = urllib2.Request(
  68. url = 'http://acm.hust.edu.cn/vjudge/contest/submit.action',
  69. data = submitdata
  70. )
  71.  
  72. result = opener.open(req)
  73.  
  74. return result.read()
  75.  
  76. def getStatus():
  77. global cookie
  78. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
  79. headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
  80. opener.addheaders = [headers]
  81.  
  82. print login()
  83. #print getInfo()
  84. 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. 如何通过C#开发调用Skyline软件中提供的小工具

    熟悉Skyline的朋友会知道,在TerraBuilder和TerraExplorer Pro软件的安装目录里,提供了很多个小工具(exe程序): 虽然我们看不到这些小工具的源代码,但我们还是可以在自 ...

  2. [06] JSTL标准标签库

    1.JSTL概述 之前在<[03-01] JSP自定义标签>中已经说明了自定义标签的概况,而JSTL也是一套标签库,不过是厂商已经定义好的标签库,我们不再需要自行进行定制,直接使用即可. ...

  3. Luogu P1546 最短网络 Agri-Net

    其实这道题根本没必要写,但为了测试vector+堆优化的Prim试一发. 再次觉得Prim和Dijkstra很像,堆优化版本也差不多. 和Dijkstra一样,Prim也是在之前的dis点中选取一个最 ...

  4. 以英雄联盟的方式建模,谈对依赖注入(DI)的理解以及Autofac的用法(一)

    一.前言 近期在探索分层架构和架构设计,选择了领域驱动作为5年.Net开发后的新的方向,不可避免的接触了IoC/DI方面的技术.目前通过反射或其他方法都已实现,但只知其一,并没有考虑为什么要这么做,同 ...

  5. OpenTK教程-1绘制一个三角形

    OpenTK的官方文档是真心的少,他们把怎么去安装OpenTK说的很清楚,但是也就仅限于此,这有一篇learn opentk in 15的教程(链接已经失效,译者注),但是并不完美.你可以在15分钟内 ...

  6. 【IDEA】Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目

    转载请注明出处:http://blog.csdn.net/qq_26525215本文源自[大学之旅_谙忆的博客] 本篇博客讲解IDEA如何配置Tomcat. 大部分是直接上图哦. 点击如图所示的地方, ...

  7. CSS 外边距

    CSS 外边距围绕在元素边框的空白区域是外边距.设置外边距会在元素外创建额外的“空白”. 设置外边距的最简单的方法就是使用 margin 属性,这个属性接受任何长度单位.百分数值甚至负值. ##### ...

  8. BugkuCTF 矛盾

    前言 写了这么久的web题,算是把它基础部分都刷完了一遍,以下的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每道题的题解都以单独一篇文章的形式发表,感谢大家一直以来的支持和理 ...

  9. Linux内核分析作业 NO.8 完结撒花~~~

    进程的切换和系统的一般执行过程 于佳心  原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10000 ...

  10. linux 第七周 总结及实验

    姬梦馨 原创作品 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linux内核如何装载和启动一 ...