zoukankan      html  css  js  c++  java
  • PythonProject(1)vim的Hustoj插件

    打算写一个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 
    41     return result.read()
    42 
    43 def getInfo():
    44     global cookie
    45     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    46     headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
    47     opener.addheaders = [headers]
    48 
    49     req = urllib2.Request(url = 'http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66989#overview')
    50 
    51     result = opener.open(req)
    52     return result.read()
    53 
    54 def SubCode():
    55     global cookie
    56     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    57     headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
    58     opener.addheaders = [headers]
    59 
    60     submitdata = urllib.urlencode({
    61         'cid':'79121',
    62         'num':'C',
    63         'language':'3',
    64         'isOpen':'0',
    65         'source':'Ly9sZXQgbWUgZG8gYSB0ZXN0IHRvIGZpbmQgdGhlIHVybCBvZiB0aGUgYWRkIGkgc3ViIG15IGNvZGUKLy9pIHdhbnQgbWFrZSBhIHNwaWRlciBmb3IgbXkgdmltCi8vc28gdGhhdCBpIGNhbiBzdWJtaXQgY29kZSB2aWEgbXkgZWRpdG9yIFhE'
    66     })
    67 
    68     req = urllib2.Request(
    69         url = 'http://acm.hust.edu.cn/vjudge/contest/submit.action',
    70         data = submitdata
    71         )
    72     
    73     result = opener.open(req)
    74     
    75     return result.read()
    76 
    77 def getStatus():
    78     global cookie
    79     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    80     headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
    81     opener.addheaders = [headers]
    82 
    83 
    84 
    85 print login()
    86 #print getInfo()
    87 print SubCode()
  • 相关阅读:
    GridView中实现点击某行的任意位置就选中该行
    HtmlEncode、HtmlDecode、UrlEncode、UrlDecode
    Asp.net中从后台中如何获取html控件
    关于IE10出现LinkButton点击无效的解决方案
    【转】关于IE7 z-index问题完美解决方案
    【转】Asp.net中时间格式化的6种方法详细总结
    【转】asp.net Cookie值中文乱码问题解决方法
    asp.net中Cookie的用法【转】
    【转】ASP.NET Cookies简单应用 记住用户名和密码
    ASP.NET Cookie 概述【转】
  • 原文地址:https://www.cnblogs.com/helica/p/4725933.html
Copyright © 2011-2022 走看看