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 Django批量导入不重复数据
Mar 25 Python
Python对列表中的各项进行关联详解
Aug 15 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
Python面向对象原理与基础语法详解
Jan 02 Python
Pytorch训练过程出现nan的解决方式
Jan 02 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
python实现梯度法 python最速下降法
Mar 24 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
PyQt QMainWindow的使用示例
Mar 24 Python
使用Python拟合函数曲线
Apr 14 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
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
WordPress JQuery处理沙发头像
2009/06/22 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
JQuery Mobile实现导航栏和页脚
2016/03/09 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
js实现时钟定时器
2020/03/26 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
react的hooks的用法详解
2020/10/12 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python ini文件常用操作方法解析
2020/04/26 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
企业给企业的表扬信
2014/01/13 职场文书
2014年高考决心书
2014/03/11 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
举起手来观后感
2015/06/09 职场文书
紧急迫降观后感
2015/06/15 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python