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实现计算倒数的方法
Jul 11 Python
简单讲解Python中的闭包
Aug 11 Python
python使用Flask操作mysql实现登录功能
May 14 Python
Python中垃圾回收和del语句详解
Nov 15 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
Python 3.8 新功能全解
Jul 25 Python
python 字段拆分详解
Dec 17 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
Python如何定义有默认参数的函数
Aug 10 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 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
图书管理程序(三)
2006/10/09 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
柯基袜:Corgi Socks
2017/01/26 全球购物
美国性感女装网站:bebe
2017/03/04 全球购物
保险专业大专生求职信
2013/10/26 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
公司经理聘任书
2014/03/29 职场文书
2015年女生节活动总结
2015/02/27 职场文书
机器人瓦力观后感
2015/06/12 职场文书
简爱读书笔记
2015/06/26 职场文书
Django框架中视图的用法
2022/06/10 Python