CET 四六级查分器

博主分享了自己开发CET四六级查分器的过程,包括遇到的header问题和解决办法。程序采用Python和wxPython构建图形界面,支持多线程查询,但存在一些限制和已知问题。源代码已提供,适用于Windows 7用户,作者鼓励反馈和改进。

六级考完后,忍不住内心的兴奋之情,于当日完开始编写CET查分器,并于昨晚完成了提交表单方面的问题,由于自己一直很懒,header头部没加,所以,不给我返回信息。。。

然后就去请教了某位大神,最后请教过程中看了大神的blog,发现原来是自己没加header头部的原因,于是乎,赶紧改~

然后今天又是半个下午加半个晚上,终于搞定了,弄了一个还算简单的图形界面,由于信息有限,不能像某位大神一样,可以只要输入学校名就能查的功能,不过这样也有好处,那就是防止信息泄露,哎~话说我当时就干过这么缺德的事情尴尬(http://wenku.baidu.com/view/633fc946a8956bec0975e3ce.html 查各个学校的前六位准考证号的,但是,其实最好不要。。。除非你是真的忘了自己的准考证号)

搞得有点累,也有点兴奋,其实昨晚就已经实现了终端下的功能,今天下午和晚上主要是在搞图形界面呢!

代码还是有多地方需要改进的,这博文我已经修改好几次了,代码也替换了好几次- - 囧rz。(输入准考证前六位部分已经修改成可以输入多个准考证号,只要每个准考证号之间加入一个',' 英文输入的逗号即可)



——关于效率

比较纠结的地方就是如何创建进程,这个有点烦,我测试了很多次,效率如下:

2G ,双核CPU(抱怨:CPU有点差劲,当初机房分电脑的时候,学长们就有意见,后来对面数模晚一年分电脑,居然分到了i5的处理器!!!次奥,搞数模有个office2010么就够了咯。。。真是的)

运行期间,CPU大概会占40%左右

经过测试,60个线程是比较优的,超过100个线程就没有实质性地上升空间了,可能是线程中加减锁的问题吧

运行一个地区号(有些学校可能会有多个地区号,比如说浙工商,ZJU,ZJUT,像ZJU有4个地区号330011,330012,330013,330015,那么如果你不确定自己是哪个,那么就需要4倍的时间了)所需的时间在4分钟左右,不同的计算机可能有点不同。



不管怎样,先上源代码吧,哈哈~

主函数部分:看到那个冗长的header头部没,全是我一字一字地加上去的T T

Main.py
__author__ = 'glcsnz123'
#_*_encoding:utf-8_*_
import urllib2, urllib
import sys, time
import thread, threading
from GUI import GUIFrame
from RunMulThread import RunMulThreads, RunMul
import wx

cefy = []

def Check(stid="**", name=u"**"):
    #print name,type(name)330020121101729
    #name = unicode(name, "utf-8")
    post_data = urllib.urlencode({"id": stid.decode("gbk"), "name": name.encode("gbk")});
    #print post_data
    headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",\
               "Accept-Charset": "GBK,utf-8;q=0.7,*;q=0.3", "Accept-Encoding": "gzip,deflate,sdch",\
               "Accept-Language": "zh-CN,zh;q=0.8", "Cache-Control": "max-age=0", "Connection": "keep-alive",\
               "Content-Length": "36", "Content-Type": "application/x-www-form-urlencoded",\
               "Cookie": "cnzz_a30023677=4; sin30023677=; rtime30023677=5; ltime30023677=1356177904700; cnzz_eid30023677=19927958-1318821986-http%3A//www.baidu.com/s%3Fwd%3D99%25CB%25DE%25C9%25E1%26rsv_bp%3D0%26rsv_spt%3D3%26oq%3D9; searchtime=1356177913"
        ,
               "Host": "cet.99sushe.com", "Origin": "http://cet.99sushe.com", "Referer": "http://cet.99sushe.com/",\
               "User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.20 (KHTML, like Gecko) Chrome/25.0.1337.0 Safari/537.20"
    };

    pst = urllib2.Request("http://cet.99sushe.com/s", headers=headers);
    try:
        pst = urllib2.urlopen(pst, post_data)
    except Exception, e:
        print pst, post_data;
    html = pst.read()
    return html.decode("gbk")



def GetName():
    #name = raw_input(u"请输入你的姓名:");
    return GUIFrame.cetname


def GetLevel():
    #return raw_input("CET?");
    return GUIFrame.cetlev

anslist = [];
mylock = thread.allocate_lock()
hole = range(1, 100000)

def LoopOne(stid, name):
    w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值