python爬取学校体育部的跑超数据并用Tkinter写出应用并进行封装生成exe文件

来源:互联网 发布:sqlserver is null 编辑:程序博客网 时间:2024/05/01 05:25

之前看了python,自己写了个小应用软件通过爬虫获取学校体育部的跑操数据(实时更新)并用python自带的Tkinter写了个小应用并用PyInstaller封装生成exe文件,然后就可以用这个小软件查自己和室友的跑操记录了。
代码里涉及的隐私信息用*代替了;为大家阅读带来不便请见谅;
代码如下:

#-*-coding:utf-8-*-from Tkinter import*import osimport timeimport requeststxt=[]top = Tk()label = Label(top,text='604-1全体成员跑操查询-lin')label.pack()label2 = Label(top,text="现在的时间是:%s"%time.ctime())label2.pack()dirfm = Frame() #导入一个框架把列表框和滚动条连接起来dirsb = Scrollbar(dirfm)dirsb.pack(side = RIGHT,fill=Y)dirs = Listbox(dirfm,height=20,                        width = 50,yscrollcommand=dirsb.set)dirs.pack(side=LEFT,fill=BOTH)dirfm.pack()"""上面这一段是Tkinter的界面设计代码,包括了滚动条列表框等页面展示在下面~"""def Searchtimes4(): #此函数用来爬取数据,并在列表框中输出,下面的Searchtimes1235()形式都是一样的;    #mylist=['hello','world']    hea = {       'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0',       'Referer'   :    'http://zc*********.cn/'}    url = 'http://zc*************ent'    data ={             'authentictyToken':"deb4cbb******8ef757c198a075e7",           'number':"******",           'name':"***"}  #data构造表单,这里可以用火狐来查看表单包括哪些内容;    loginhtml = requests.post(url,data = data,headers = hea).text    res_tr = r'<td\sarg\=(.*?)</td>'#正则表达式用于筛选数据;    m_tr = re.findall(res_tr,loginhtml,re.S|re.M)    dirs.insert(END,"*的次数:")    res_ptr = r'<span\sclass\=\"badge\">(.*?)</span>'#同样是正则表达式    m_tr1 = re.findall(res_ptr,loginhtml,re.S|re.M)    for lines in m_tr1:        dirs.insert(END,lines)    for line in m_tr:   #在列表框按行输出        dirs.insert(END,line)def Searchtimes1():    #mylist=['hello','world'] #测试时用的例子,这里已经屏蔽掉了    hea = {       'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0',       'Referer'   :    'http://z********du.cn/'}    url = 'http://zccx***********dent'    data ={             'authentictyToken':"deb4cbb***********98a075e7",           'number':"B********",           'name':"***"}    loginhtml = requests.post(url,data = data,headers = hea).text    res_tr = r'<td\sarg\=(.*?)</td>'    m_tr = re.findall(res_tr,loginhtml,re.S|re.M)    dirs.insert(END,"*的次数:")    res_ptr = r'<span\sclass\=\"badge\">(.*?)</span>'    m_tr1 = re.findall(res_ptr,loginhtml,re.S|re.M)    for lines in m_tr1:        dirs.insert(END,lines)    for line in m_tr:        dirs.insert(END,line)def Searchtimes2():    #mylist=['hello','world']    hea = {       'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0',       'Referer'   :    'ht**********.cn/'}    url = 'http://zc*******************'    data ={             'authentictyToken':"de*************075e7",           'number':"********",           'name':"***"}    loginhtml = requests.post(url,data = data,headers = hea).text    res_tr = r'<td\sarg\=(.*?)</td>'    m_tr = re.findall(res_tr,loginhtml,re.S|re.M)    dirs.insert(END,"*的次数:")    res_ptr = r'<span\sclass\=\"badge\">(.*?)</span>'    m_tr1 = re.findall(res_ptr,loginhtml,re.S|re.M)    for lines in m_tr1:        dirs.insert(END,lines)    for line in m_tr:        dirs.insert(END,line)def Searchtimes3():    #mylist=['hello','world']    hea = {       'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0',       'Referer'   :    'http**********************'}    url = 'http******************'    data ={             'authentictyToken':"deb******************",           'number':"******",           'name':"***"}    loginhtml = requests.post(url,data = data,headers = hea).text    res_tr = r'<td\sarg\=(.*?)</td>'    m_tr = re.findall(res_tr,loginhtml,re.S|re.M)    dirs.insert(END,"*的次数:")    res_ptr = r'<span\sclass\=\"badge\">(.*?)</span>'    m_tr1 = re.findall(res_ptr,loginhtml,re.S|re.M)    for lines in m_tr1:        dirs.insert(END,lines)    for line in m_tr:        dirs.insert(END,line)def Searchtimes5():    #mylist=['hello','world']    hea = {       'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0',       'Referer'   :    'http://z***********n/'}    url = 'http***************'    data ={             'authentictyToken':"deb*******************",           'number':"*******",           'name':"***"}    loginhtml = requests.post(url,data = data,headers = hea).text    res_tr = r'<td\sarg\=(.*?)</td>'    m_tr = re.findall(res_tr,loginhtml,re.S|re.M)    dirs.insert(END,"***的次数:")    res_ptr = r'<span\sclass\=\"badge\">(.*?)</span>'    m_tr1 = re.findall(res_ptr,loginhtml,re.S|re.M)    for lines in m_tr1:        dirs.insert(END,lines)    for line in m_tr:        dirs.insert(END,line)dirsb.config(command=dirs.yview)   """这里的代码可以用python字典把形式弄的简便点,用字典就不用调用5个函数,直接在一个函数中利用不同数据的表单看起来比较干净,不过因为我想要查的人不多,而且这样写比较方便,直接改一下函数post的表单里的两个值,学号和姓名就好了,就没有深入考虑用python的字典了"""dosearch = Button(top,text = '查询截止到日前*的次数',command = Searchtimes1,fg='blue')dosearch.pack()dosearch = Button(top,text = '查询截止到日前*的次数',command = Searchtimes2,fg='blue')dosearch.pack()dosearch = Button(top,text = '查询截止到日前*的次数',command = Searchtimes3,fg='blue')dosearch.pack()dosearch = Button(top,text = '查询截止到日前*的次数',command = Searchtimes4,fg='blue')dosearch.pack()dosearch = Button(top,text = '查询截止到日前*的次数',command = Searchtimes5,fg='blue')dosearch.pack()#quitesearch = Button(top,text = '退出',command = top.quit)#quitesearch.pack()     """这两行代码是加一个退出的控件,不过感觉没必要就没加了"""mainloop()

这里写图片描述

运行界面:
这里写图片描述

另外还有可以把代码加到最近流行的图灵机器人里面,然后把图灵机器人接到群里,这样只要回复查跑超数据就可以自动给出回复了,接到手机qq或微信里比在电脑用exe方便多了;

大学生活的小记录,写到这里了,有机会再更新有关Tkinter和PyInstaller的使用博文;有问题可以留言,有时间我一定会回的;

0 0
原创粉丝点击