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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34432960/article/details/61429417

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

#-*-coding:utf-8-*-
from Tkinter import*
import os
import time
import requests

txt=[]
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的使用博文;有问题可以留言,有时间我一定会回的;

猜你喜欢

转载自blog.csdn.net/qq_34432960/article/details/61429417