今早用之前的在校园蘑菇上的查分软件 http://blog.csdn.net/gripleaf/article/details/9075561 查了下六级,发现进程老死,然后刷了下微博,发现@阿小信大人 说查分地址改变了,于是就去看了一下新的查分地址,然后按照之前跟康哥讲的多线程调度方法,略加修改,现在已经完成了新版CET46级差分工具,此工具后期查分速度会减缓,但前期的速度是很快的。
附上源码:
主函数,所有的编码都应当是utf-8,包括读入文件的编码。由于改成是图形界面版本了,所以就不需要什么读入文件了,不过需要一些图片放在同一目录下,图片列表的话,在调试过程中应该能够看到的,我就不写了。。。实在不行,直接checkCETGUI.py的源代码也可以。
原本还想帮忙编译成exe的,但是用py2exe试了好几次,不知道什么原因,会弹出很多白色的标准输出框来,所以就放弃治疗了。如果谁能告诉我这是怎么回事,真是万分感谢啊。
另外,据说99宿舍已经提供了通过姓名和学校查询准考证号的功能,个人觉得应该是@阿小信大人 的程序给99宿舍服务器造成了一定压力才迫使他们推出这种功能。再次膜拜一下。
CET.py
主函数,可以独立编译运行
__author__ = 'glcsnz123'
#_*_encoding:utf-8_*_
import urllib, urllib2, thread, time, codecs
mylock = thread.allocate_lock()
ScoreList = []
anslist = []
cefy = []
rank = []
Prefix = ""
UserName = ""
Rating = 0.0
def Check(hole, stid="", name=""):
#print stid, name
if not isinstance(stid, unicode):
stid = stid.decode("ascii")
if not isinstance(name, unicode):
name = name.decode("utf-8")
post_data = urllib.urlencode({"id": stid.encode("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",
"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"
};
#print post_data
pst = urllib2.Request("http://cet.99sushe.com/search", headers=HEADERS);
try:
pst = urllib2.urlopen(pst, post_data)
except Exception, e:
try:
mylock.acquire()
hole.append(stid[-5::1])
#print stid
finally:
mylock.release()
return "w"
html = pst.read()
#print html
return html.decode("gbk")
def LoopOne(prefix, name, hole, async=True, t_index=0, c_index=0): #check the query in loop
while rank[t_index] == c_index:
try:
if async:
mylock.acquire()
if len(hole)