提示:该代码仅供学习使用,切勿滥用!!!
逻辑:
1.获取Json文件的内容
2.根据信息生成URL
3.获取URL的内容,根据时间进行分析,如果有票则发送邮件,如果没有,则继续监听
1.定义Json文件
内容如下:
{
"_Nodes" : "定义起始站",
"from_address" : "成都东",
"_Nodes" : "定义终点站",
"to_address" : "遂宁",
"_Nodes" : "定义车次",
"departure_date" : "2018-12-30",
"_Nodes" : "定义时间检查区间",
"start_time" : "09:00",
"_Nodes" : "定义时间结束区间",
"stop_time" : "12:00",
"_Nodes" : "定义列车类型 [ D:动车 Z:直达 T:特快 K:快速 A:全部 ]",
"type" : "A",
"_Nodes" : "定义是否发送邮件 true为发送 false为不发送",
"send_mail" : "false",
"_Nodes" : "如果上述定义为true,则下面则定义邮箱的信息包括,SMTP 和 认证信息",
"mail_smtp" : "smtp.qq.com",
"user_name" : "to_user@qq.com",
"user_password" : "password",
"mail_subject" : "仅仅是为了好玩",
"_Nodes" : "将信息发送给谁",
"mail_to_address" : "user1@qq.com;user2@163.com",
"_Nodes" : "有票时,提示的最大次数,当有间隔时,则重新计数 , 这里最大值为100",
"send_mail_max" : 3,
"_Nodes" : "刷新间隔时间,单位:秒",
"interval_time" : 30
}
2.Python代码处理Json文件并且返回结果
代码如下:
执行的结果如下:
{'from_address':'成都东','to_address':'遂宁','departure_date':'2019-01-04','start_time':'09:30','stop_time':'12:00','type':'D','send_mail':'true','mail_smtp':'smtp.qq.com','user_name':'2081795560@QQ.COM','user_password':'idfqdnnrfjttbjbe','mail_subject':'仅仅是为了好玩','mail_to_address':'2859413527@QQ.COM','send_mail_max': 2,'interval_time': 10}
3.获取站别ID
网址:https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9085
具体内容如下:
通过分析得到,名词的后一位就是站别ID
Python获取站别ID如下:
执行结果如下:
['ICW','NIW']
['成都东','遂宁']
3.获取实际URL
通过分析,我们可以得知,每次请求网页,实际上实在请求一个数据包,例如:
https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2019-01-05&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT
我们只需要将数据拼接上就可以了
代码如下:
https://kyfw.12306.cn/otn/leftTicket/queryA?leftTicketDTO.train_date=2019-01-03&leftTicketDTO.from_station=ICW&leftTicketDTO.to_station=NIW&purpose_codes=ADULT
综合代码