python打造12306余票实时监控
# encoding=utf-8
from Tkinter import *
from ScrolledText import ScrolledText
import urllib2
import json
import ssl
import time
import threading
'''
根据chrome 开发者模式取得城市代码参数,此步骤的目的通过中文去定位到对应英文城市代码
'''
citylist = open('C:\Users\Think\Desktop\citylist.txt')
city = citylist.read() # 把文件内容赋值给city
citylist.close()
# 取出城市对应代码,进行分割得到所需
tmp_c = city.split('@')
city_d = {}
for i in tmp_c:
if not i:
continue # 因为第一位为空所以判断如果为空则继续循环,不为空继续
city_d[i.split('|')[1]] = i.split('|')[2]
# 城市对应城市代码生成的dic
# 对应的座位类型,这里是硬卧
city_s = city_d['北京']
city_a = city_d['天津']
seat = 'queryLeftNewDTO'
yw = 'yw_num'
'''
12306证书验证会影响访问,所以要关闭掉
'''
ssl._create_default_https_context = ssl._create_unverified_context # 关闭证书验证
#格式化字符串,把往返城市和时间写入并且访问
def getList():
s_time = '2017-04-20'
html = urllib2.urlopen(
"https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADULT" % (
s_time, city_s, city_a))
content = html.read()
text1 = json.loads(content) # json不是一个类型是一种表达方式
# print text1
return text1 # 转换成dic
#根据座位类型查询火车票余票
def train_name():
train_name = getList()
for i in train_name['data']: # 通过键值取到想要的信息,这里有个坑需要注意,这个字典里面又嵌套了一个字典以queryLeftNewDTO作为key,同时它也是一个value
x = 0
while i[seat][yw] == u'无': # 如果没票打印无票并且循环直到有票
x += 1
time1 = time.strftime('%Y-%m-%d %H:%M:%S')
text.insert(END, u'检测时间%s:\n' % time1)
text.insert(END, u'第%d次查询:\n' % x)
text.insert(END, u'无票\n')
time.sleep(2)
else:
print u'有票%s'%(i[seat][yw])
# print u'第%d次查询:'%x
# print u'无票'
if i[seat][yw]!=u'无':#如果有票就打印出对应车次时间等等
tmp = u'''车次:%s
出发时间:%s
到达时间:%s
历时:%s
硬卧:%s\n''' % (i['queryLeftNewDTO']['station_train_code'], i['queryLeftNewDTO']['start_time'],
i['queryLeftNewDTO']['arrive_time'], i['queryLeftNewDTO']['lishi'], i[seat][yw])
text.insert(END,tmp)#将数据插入GUI用于显示
# print trainlist
#采用多线程进行处理
def start():
t1 = threading.Thread(target=train_name)
t1.start()
#建立一个GUI界面
root = Tk()
root.title(u'查询火车余票')
root.state("zoomed")
root.geometry('300x500')
text = ScrolledText(root, font=('微软雅黑', 16))
text.pack()
button = Button(root, text=u'开始抢票', font=('微软雅黑', 16), command=start) # target目标函数名字切记不要()不然点击按钮就失效了
button.pack()
root.mainloop()
python打造12306余票实时监控的更多相关文章
- 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控【转】
概述 本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控. 引言 我们很多时候在使用JMeter做性能测试,我们很难及时察看压测过程中应用的性能状况,总是需要等 ...
- Java爬取12306余票
一.前言 今年国庆和中秋一起放,虽然很欢快,但是没有票了!!! 于是自己倒腾了一个查询余票的小程序. 二.准备工作 1.先打开12306的页面 2.然后右键检查,点network 3.再点一下1230 ...
- 【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫
实时监控股市重大公告的Python爬虫小技巧 精力有限的我们,如何更加有效率地监控信息? 很多时候特别是交易时,我们需要想办法监控一些信息,比如股市的公告.如果现有的软件没有办法实现我们的需求,那么就 ...
- python写12306抢票
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 利用splinter写的一个手动过验证及自动抢票的例子, 大家可以自己扩展或者弄错窗体.web端. ...
- Python操作12306抢票脚本
有一段时间没有使用Python了,前几天经朋友提起一篇关于用Python实现抢火车票的文章,百度了实现抢火车票的技术细节,网上却有不少资料,也不是新鲜的东西.在了解了一些技术手段,阅读了一些大神的博文 ...
- php 通过API接口连接12306余票查询
<?php header("content-type:text/html;charset='utf-8'"); //设置编码 echo "<meta cont ...
- 用webpy实现12306余票查询
效果
- python subprocess.Popen 控制台输出 实时监控百度网ping值
import subprocess file_out = subprocess.Popen('ping www.baidu.com', shell=True, stdout=subprocess.PI ...
- 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控(centos7环境)
前提条件,已经安装jmeter并可以运行 1.安装influxdata wget et https://dl.influxdata.com/influxdb/releases/influxdb-1.7 ...
随机推荐
- loadrunner之做压力测试要做的准备
前提B/S架构 1.要有个备库和主库保存一致 到时候做压力测试的时候,要断开主库连接到备库.进行测试.以免主库出现垃圾数据.2.节点 判断单节点能承受多大的压力,如200万的用户账号,10万的在线用户 ...
- Selenide 阶段性总结介绍(UI自动化测试工具)
今天给大家介绍一个比较新的UI自动化测试工具-- Selenide.确实是比较新的,国内应该还没有多少人用它.在百度和google上你只能搜到一个中文帖子简单介绍了一下.如果你想用这个工具,不可避免的 ...
- [leetcode]三数之和
三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复 ...
- SQL Server临时表漫谈
SQL Server是微软的关系型数据库,对于刚入门的我是一个非常友好的开发工具.可视化界面的安装与操作,非常适合刚入门的我. 其实大家要找这方面的资料,在网上一搜一大堆,这里我就不赘述那些了,基本都 ...
- 三点须知:当我们在开发过程中需要用到分布式缓存Redis的时候
当我们在开发过程中需要用到分布式缓存Redis的时候,我们首先要明白缓存在系统中用来做什么? 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的 ...
- PytorchZerotoAll学习笔记(五)--逻辑回归
逻辑回归: 本章内容主要讲述简单的逻辑回归:这个可以归纳为二分类的问题. 逻辑,非假即真.两种可能,我们可以联想一下在继电器控制的电信号(0 or 1) 举个栗子:比如说你花了好几个星期复习的考试(通 ...
- java处理大文本2G以上
面试中经常碰到类似问题,问题的关键我觉得是用设置一个缓冲区 还有一个思路 是通过Linux split 命令将文件直接切割成小文件,再进行处理再汇总. 或者jdk7提供的 forkjoin 框架,利用 ...
- loadrunner11--基础使用
每次开启电脑都需要破解一次Lr,汉化版的有问题,建议使用英文版的.我测试的环境是Windows7+IE8+LR11.(在Windows10上试过,谷歌和IE11都不能正常运行),以下我会具体来操作,最 ...
- webpack入门指南-step01
一.webpack是什么? web开发中常用到的静态资源主要有JavaScript.CSS.图片.Jade等文件,webpack中将静态资源文件称之为模块.webpack是一个模块打包工具(命令行工具 ...
- Scrum立会报告+燃尽图(十月二十二日总第十三次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...