2017,现在已进入春运期间,真的是一票难求,深有体会。各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛。对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看12306相关的接口,如果有类似的需求或业务,或者此文章可以帮助到你。
在一些需要工具等应用可能会应用到火车票信息的查询,但是又不知去哪里找即免费又不限制次数的Api接口,呵呵,今天我简单给你介绍一些Api接口的抓取,不要激动,最终还是希望可以帮助到你。对于有web开发经验的,可直接忽略此文,本文仅是提供一种获取方式,不保障永久可用。
不多说了,到此为止,直接先给一张效果图,明确一下今天的博客内容。
接下来,我们就直接奔主题喽......
此文使用的是Chrome浏览器。
网页地址:https://kyfw.12306.cn/otn/leftTicketPrice/init
看图说人话:
我是使用2016年12月01日作为查看数据的,你使用接口时,务必注意一下查询接口时传递的时间参数。
方法同上,先给效果图;
第一个接口,名字叫log,其实是请求服务器判断服务是否正常,返回的数据Httpstatus是200,status为true,'validateMessagesShowId':'_validatorMessage',原来仅仅是一个验证信息。
接口:https://kyfw.12306.cn/otn/leftTicket/log?leftTicketDTO.train_date=2016-12-01&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT
接口分析:
协议:https:
域名:kyfw.12306.cn/
接口:otn/leftTicket/log?
请求参数:
ps:如在Android等客户端访问接口出现证书问题,12306是自签名证书,去12306官网下载加到客户端信任证书即可。
数据为:
{ 'validateMessagesShowId': '_validatorMessage', 'status': true, 'httpstatus': 200, 'messages': [], 'validateMessages': {}}
第二个接口,名字叫query,一看就是查询接口。
接口:https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2016-12-01&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT
接口分析:
协议:https:
域名:kyfw.12306.cn/
接口:otn/leftTicket/query?
请求参数:
{ 'validateMessagesShowId': '_validatorMessage', 'status': true, 'httpstatus': 200, 'data': [......], 'messages': [], 'validateMessages': {}}
具体列车数据查看data对应的数组即可。
数据里面单个元素的数据结构为:
{ 'queryLeftNewDTO': { 'train_no': '240000G1010C', 'station_train_code': 'G101', 'start_station_telecode': 'VNP', 'start_station_name': '北京南', 'end_station_telecode': 'AOH', 'end_station_name': '上海虹桥', 'from_station_telecode': 'VNP', 'from_station_name': '北京南', 'to_station_telecode': 'AOH', 'to_station_name': '上海虹桥', 'start_time': '06:44', 'arrive_time': '12:38', 'day_difference': '0', 'train_class_name': '', 'lishi': '05:54', 'canWebBuy': 'IS_TIME_NOT_BUY', 'lishiValue': '354', 'yp_info': 'O055300032M0933000349174800012', 'control_train_day': '20161229', 'start_train_date': '20161201', 'seat_feature': 'O3M393', 'yp_ex': 'O0M090', 'train_seat_feature': '3', 'seat_types': 'OM9', 'location_code': 'P2', 'from_station_no': '01', 'to_station_no': '11', 'control_day': 59, 'sale_time': '1230', 'is_support_card': '1', 'controlled_train_flag': '0', 'controlled_train_message': '正常车次,不受控', 'gg_num': '--', 'gr_num': '--', 'qt_num': '--', 'rw_num': '--', 'rz_num': '--', 'tz_num': '--', 'wz_num': '--', 'yb_num': '--', 'yw_num': '--', 'yz_num': '--', 'ze_num': '有', 'zy_num': '有', 'swz_num': '12' }, 'secretStr': '', 'buttonTextInfo': '23:00-06:00系统维护时间'}
此文章仅是为了一些对web前端不太熟悉的技术人员起到抛砖引玉的作用,希望看过之后可以达到举一反三的效果;如果此文章对你有所帮助,请在下方点一个赞,谢谢您的支持!
联系客服