python爬取学校体育部的跑超数据并用Tkinter写出应用并进行封装生成exe文件
2017-03-11 21:36
489 查看
之前看了python,自己写了个小应用软件通过爬虫获取学校体育部的跑操数据(实时更新)并用python自带的Tkinter写了个小应用并用PyInstaller封装生成exe文件,然后就可以用这个小软件查自己和室友的跑操记录了。
代码里涉及的隐私信息用*代替了;为大家阅读带来不便请见谅;
代码如下:
运行界面:
另外还有可以把代码加到最近流行的图灵机器人里面,然后把图灵机器人接到群里,这样只要回复查跑超数据就可以自动给出回复了,接到手机qq或微信里比在电脑用exe方便多了;
大学生活的小记录,写到这里了,有机会再更新有关Tkinter和PyInstaller的使用博文;有问题可以留言,有时间我一定会回的;
代码里涉及的隐私信息用*代替了;为大家阅读带来不便请见谅;
代码如下:
#-*-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\=\" b466 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的使用博文;有问题可以留言,有时间我一定会回的;
相关文章推荐
- 使用py2exe对Python文件进行封装生成exe文件
- 【Python】爬图片,Py2exe打包成EXE,并用inno setup生成安装文件
- 【tkinter】python工具pyinstaller打包生成exe文件非常大的原因分析(openpyxl)openpyxl
- Python3.4 ABAP 生成带有命令行参数的二维码EXE应用文件
- 使用pyinstaller工具打包python项目代码生成exe文件
- python生成ios固定代码模块脚本打包成exe文件
- Python脚本如何生成Windows可执行文件.exe
- python使用json格式进行数据封装
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
- 利用python进行数据分析之数据加载存储与文件格式
- [python]通达信历史日线数据解析转换为CSV文件进行存储
- python 将py脚本打包生成exe可执行文件
- python生成exe文件报no module _mssql错误
- Python 使用cx_freeze 生成exe文件
- 使用pyinstaller工具打包python项目代码生成exe文件
- java_读取文件并对数据进行排序并写出
- python读出mysql数据写出到csv文件中[整理]
- 利用python进行数据分析之pandas库的应用(一)
- python打包生成的exe文件运行时提示缺少模块
- 利用python进行数据分析之pandas库的应用(二)