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)

总结

以上所述是小编给大家介绍的Python实现12306火车票抢票系统,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对龙方网络网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

python抢票12306源码_Python实现12306火车票抢票系统相关推荐

  1. python抢票12306源码_Python突破12306最后一道防线,实现自动抢票(附源码)

    一年一度的春运又来了,今年我自己写了个抢票脚本.使用Python+Splinter自动刷新抢票,可以成功抢到.(依赖自己的网络环境太厉害,还有机器的好坏) Splinter是一个使用Python开发的 ...

  2. 如何用python编写抢购程序源码_Python实现淘宝秒杀聚划算抢购自动提醒源码

    说明 本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时发出提醒(音频文件自己定义位置)并自动弹开页面(URL自己定义). 同时还可以通过命令行参数自定义刷新间隔时间(默认0.1s)和监控持续 ...

  3. python 搜索引擎 实验楼的源码_Python语言之简历有错别字被拒绝聘用?文档被领导说?Python实现永无错别字!...

    本文主要向大家介绍了Python语言之简历有错别字被拒绝聘用?文档被领导说?Python实现永无错别字!,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 找出中文错别字 1.5 代 ...

  4. python发朋友圈源码_Python 带你一键生成朋友圈超火的九宫格短视频

    1. 场景 如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火! ​从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格 除了传统的剪辑软件可以实现,是否有其他更加快 ...

  5. python语音转文字源码_Python实现自动化语音转文本,彻底解放你的双手

    当对一个或多个人的谈话进行记录时,采用一种高度准确和自动化的方式将口语提取为文本非常有用.转换成文字后,便可以将其用于进一步分析或用作其他功能. 我们将使用称为AssemblyAI(https://w ...

  6. (附源码)spring boot火车票订票系统 毕业设计171538

    火车票订票系统的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题 ...

  7. python web开发项目 源码_Python + Flask 项目开发实践系列七

    对于 Python + Flask 这种灵活的web开发框架,在前面的六个系列文章中详细的进行了说明,主要讲到了页面的首页加载时的页面渲染,增加功能,删除功能,修改功能,查询功能,查询详情功能等一些页 ...

  8. python初学者编程指南源码_Python可以这样学 PDF 带讲义代码版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于学Python方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小22 MB,董付国编写,目前豆瓣.亚马逊.当当.京东等电子书 ...

  9. python数据库编程 代码 源码_Python可以这样学_Python教程

    资源名称:Python可以这样学 内容简介: 全书共分16章,对Python内部工作原理进行了一定深度的剖析,99%以上的案例代码使用Python 3.5.1实现,也适用于Python 3.4.x(除 ...

最新文章

  1. 2014.3.29阿里巴巴暑期实习笔试题分析
  2. 少儿python编程培训-无锡江阴少儿Python编程培训一对一
  3. 老生常谈,正确使用memset
  4. 渭南java_渭南java语言入门教程视频
  5. memcached安装运行
  6. java的runtime类,java中Runtime类的简单应用
  7. github和pypi_如何将GitHub用作PyPi服务器
  8. python企业微信回调_回调模式
  9. python write 写多行_如何用 Python 执行单行命令
  10. xshell6 不更新无法使用_世纪金花商联卡无法正常使用 客服:因门店面临改造,涉及品牌、规则每天都在更新...
  11. 云图说丨初识数据工坊DWR
  12. 万字总结Keras深度学习中文文本分类
  13. 抽象、多样性与可变性
  14. 7.1编辑shapefile文件
  15. docker安装和入门教程
  16. KALI--入门教程--kali下载(vm),更新国内源,更换中文界面
  17. 大数据分析与可视化介绍,基于机器学习的大数据分析具有哪些独特的特点
  18. 查看和调试core文件
  19. 前端安全 - 信任的iframe也有隐患
  20. CouchDB与CouchBase的比较

热门文章

  1. linux 开机企鹅LOGO修改
  2. php bc函数 500,PHP BC Math 函数详解
  3. 操作系统进程状态模型
  4. multi-task
  5. idea查看meven历来_历来十大编程笑话
  6. 独立项目-场景刷怪、小怪AI、主角战斗、小怪死亡-01
  7. 如何用计算机算p,(P/A,0.5%,120)如何用计算器计算
  8. Ubuntu16.04下的Opencv安装与使用
  9. 第十三届蓝桥杯C++B组j国赛
  10. linux配置添加组播mac地址,如何实现端口静态添加组播MAC地址