
2019-04-19 已经有了新的方法
=======================================================
2018-11-07 以下方法由于12306更新,可能已经失效,目前正在探索新的方法
=======================================================
作为每天都要抓取车次数据的人,有资格回答这个问题了
首先通过
https://kyfw.12306.cn/otn/resources/js/query/train_list.js?scriptVersion=1.0
拿到计划的车次列表,注意这个列表大概每个月生成一次,里面有一个月的数据,而且经常在最后一天过了之后不生成新的,会有那么几天更新不到数据
而哪个数据最准确呢,自然是余票数据,除了一些特殊车次以外,都要卖票不是。所以通过train_list.js的数据,我们统计所有不重复的发到站,然后逐个请求余票数据
https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-12-29&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT
另外需要注意这个余票接口经常变,目前已经发现的有
queryA
queryX
queryY
query
今天又加了个queryO,然后数据格式也有变化
大概3000多个请求吧
然后我们统计不重复的车次内码,就是这个数据
240000G1530E
240000G1570K
24000000G704
24000000G900
...
然后再通过车次信息的接口查到所有停靠站
https://kyfw.12306.cn/otn/czxx/queryByTrainNo?train_no=240000G1530E&from_station_telecode=VNP&to_station_telecode=AOH&depart_date=2017-12-29
ok搞定
