Python实现12306火车票抢票系统


Posted in Python onJuly 04, 2019

Python实现12306火车票抢票系统效果图如下所示:

Python实现12306火车票抢票系统

具体代码如下所示:

import urllib.request as request
  import http.cookiejar as cookiejar
  import re
  import os
  import smtplib
  from email.mime.text import MIMEText
  import time
  user = '' #登陆邮箱
  pwd = ''#邮箱密码
  to = [''] #发送的邮箱
  with open('D:\Python源码\city.txt','r') as f:
    a = f.read()
  station = re.compile(u'\w+:(.+?):(\w+):\d').findall(a)
  dic1 = {}
  for b in range(0, len(station)):
    dic1[station[b][0]] = station[b][1]
  def gethtml(geturl):
    cj = cookiejar.LWPCookieJar()
    cookiejarsupport = request.HTTPCookieProcessor(cj)
    opener = request.build_opener(cookiejarsupport,request.HTTPHandler)
    headers = {
      'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36',
      'Host':'www.12306.cn',
      'Referer':'http://www.12306.cn/opn/lcxxcx/init'
    }
    request.install_opener(opener)
    req = request.Request(url=geturl, headers=headers)
    html = request.urlopen(req).read().decode()
    return html
  def getstation(html):
    fromstation = re.compile(r'from_station_name":"(.+?)","').findall(html)
    tostation = re.compile(r'to_station_name":"(.+?)",').findall(html)
    startime = re.compile(r'"start_time":"(.+?)"').findall(html)
    arrtime = re.compile(r'arrive_time":"(.+?)"').findall(html)
    lishi = re.compile(r'"lishi":"(.+?)",').findall(html)
    webbuy = re.compile(r'"canWebBuy":"(.+?)').findall(html)
    startstation = re.compile(r'start_station_name":"(.+?)"').findall(html)
    endstation = re.compile(r'end_station_name":"(.+?)"').findall(html)
    ruanwo = re.compile((r'"rw_num":"(.+?)",')).findall(html)
    ruanzuo = re.compile((r'"rz_num":"(.+?)"')).findall(html)
    yingwo = re.compile(r'"yw_num":"(.+?)"').findall(html)
    ruanzuo = re.compile(r'"rz_num":"(.+?)"').findall(html)
    yingzuo = re.compile(r'"yz_num":"(.+?)"').findall(html)
    wuzuo = re.compile(r'"wz_num":"(.+?)"').findall(html)
    checi = re.compile(r'station_train_code":"(.+?)"').findall(html)
    datanum = re.compile((r'day_difference":"(.+?)"')).findall(html)
    erdengzuo = re.compile(r'ze_num":"(.+?)",').findall(html)
    num = range(0, len(yingwo))
    for i in num:
      try:
        if int(yingzuo[i]) != 0 or int(erdengzuo[i]) != 0 or int(wuzuo[i] !=0):   #Z108
          print(checi[i], '  二等座:', erdengzuo[i], '  硬座:', yingzuo[i],'  无座:',wuzuo[i])
          if yingwo[i] != '--' or yingzuo[i] != '无':
            msg=MIMEText('火车:'+fromstation[i]+' ->'+tostation[i] +'('+ checi[i]+ ')\n二等座:'+erdengzuo[i]+ '张;硬座:'+ yingzuo[i]+'张;无座:'+wuzuo[i]+ '张!快买去!\n网址:http://www.12306.cn/opn/lcxxcx/init')
            msg['Subject'] = '有票啦!'
            msg['From'] = user
            msg['To'] = ','.join(to)
            s = smtplib.SMTP('smtp.qq.com', timeout = 30) #连接SMTP端口
            s.login(user,pwd)#登陆服务器
            s.sendmail(user,to,msg.as_string())
            s.close()
            print('发送成功')
            print('------------------------------------------------------------')
      except:
        continue
  print('''''
By:王小涛_同?W 
-------------------------------------------------------------- 
  欢迎使用! 
-------------------------------------------------------------- 
''') 
print ('请输入购票类型:(0为成人票  其他为学生票) ') 
leixing = input() 
print('请输入起点:') 
qidian = input() 
try: 
  if dic1[qidian]: 
    qidian = dic1[qidian] 
except: 
  print('起点输入有误!') 
print('请输入终点:') 
zhongdian = input() 
try: 
  if dic1[zhongdian]: 
    zhongdian = dic1[zhongdian] 
except: 
  print('终点输入有误!') 
print('请输入购票年份:') 
year = input()+'-' 
print('请输入购票月份:(2位)') 
month = input()+'-' 
print('请输入购票日期:(2位)') 
date = input() 
date = year + month + date 
if leixing == 0: 
  geturl = 'http://www.12306.cn/opn/lcxxcx/query?purpose_codes=ADULT&queryDate='+date+'&from_station='+qidian+'&to_station='+ zhongdian 
else: 
  geturl = 'http://www.12306.cn/opn/lcxxcx/query?purpose_codes=0X00&queryDate='+date+'&from_station='+qidian+'&to_station='+ zhongdian 
while 1: 
  getstation(gethtml(geturl)) 
  print('火车票监测中...') 
  time.sleep(300) </pre>

总结

以上所述是小编给大家介绍的Python实现12306火车票抢票系统,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
使用python绘制常用的图表
Aug 27 Python
python flask 多对多表查询功能
Jun 25 Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Python装饰器用法实例总结
May 26 Python
Django中的Model操作表的实现
Jul 24 Python
python实现二维插值的三维显示
Dec 17 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
python小程序实现刷票功能详解
Jul 17 Python
详解python变量与数据类型
Aug 25 Python
如何利用Pyecharts可视化微信好友
Jul 04 #Python
python 获取等间隔的数组实例
Jul 04 #Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 #Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 #Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 #Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 #Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 #Python
You might like
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
php将html转为图片的实现方法
2017/05/19 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
JS验证字符串功能
2017/02/22 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
python 随机数生成的代码的详细分析
2011/05/15 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
解决Python使用列表副本的问题
2019/12/19 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
疾病捐款倡议书
2014/05/13 职场文书
师范生自荐信模板
2014/05/28 职场文书
体育比赛口号
2014/06/09 职场文书
宿舍标语大全
2014/06/19 职场文书
个人剖析材料范文
2014/09/30 职场文书
单位工作证明
2014/10/07 职场文书
个人年度总结报告
2015/03/09 职场文书
导游词之峨眉山
2019/12/16 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python