justinzm / gopup

数据接口:百度、谷歌、头条、微博指数,宏观数据,利率数据,货币汇率,千里马、独角兽公司,新闻联播文字稿,影视票房数据,高校名单,疫情数据…
http://www.gopup.cn
2.55k stars 389 forks source link

建议添加12306车站、车次数据库 #20635

Open m2kar opened 3 years ago

m2kar commented 3 years ago

1. 从12306下载车站信息

通过分析12306的网站代码,发现全国车站信息的URL

https://kyfw.12306.cn/otn/resources/js/framework/station_name.js

2. 解析车站信息

解析1的数据,输出成以下格式

ID  电报码  站名    拼音        首字母  拼音码
0   BOP    北京北  beijingbei  bjb   bjb

3. 从12306下载车次信息

通过分析12306的网站代码,发现全国车次信息的URL。这个文件存储了当前60天的所有车次信息,大约有35MB。

https://kyfw.12306.cn/otn/resources/js/query/train_list.js

4. 解析车次信息

解析3的数据,按照日期分割成以下格式。

类型  列车编号       车次  起点  终点
D    24000000D10R  D1   北京  沈阳

12306将全国列车分成了7类,C-城际高速,D-动车,G-高铁,K-普快,T-特快,Z-直达,O-其他列车。这里我们仅抽取 C-城际高速,D-动车,G-高铁 的数据。

5. 根据车次和车站解析时刻表URL

首先Merge所有日期的车次,以车次和列车编号为KEY,去除重复后得到全部车次一览。
然后根据各车站的电报码,得出下载时刻表用的URL。如下:

https://kyfw.12306.cn/otn/czxx/queryByTrainNo?train_no=列车编号&from_station_telecode=出发车站电报码&to_station_telecode=到达车站电报码&depart_date=出发日期
注意点

a) 部分车次仅在特定日期运营(比如:工作日,周末,节假日等)
b) 同一车次,在不同日期,运营时刻和停靠车站可能不一样
c) 同一车次同一列车编号,在不同日期,运营时刻和停靠车站完全一致

6. 从12306下载时刻表信息

根据步骤5中得到的时刻表URL,下载所有时刻表信息。(JSON格式)

7. 解析时刻表信息

解析6的数据,分别输出完整的“车站”,“车次”,“时刻表”成以下CSV格式

ID  电报码  站名    拼音        首字母  拼音码
0   BOP    北京北  beijingbei  bjb   bjb
车次   起点   终点 出发时间  到达时间 类别  服务
C1002 延吉西 长春  5:47    8:04   动车  2
车次   站序  站名   到站时间  出发时间  停留时间  是否开通
C1002 1    延吉西  ----    6:20     ----     TRUE
      2    长春    8:25    8:25     ----     TRUE

参考: https://github.com/metromancn/Parse12306

justinzm commented 3 years ago

哈哈 研究一下

justinzm commented 3 years ago

https://kyfw.12306.cn/otn/resources/js/query/train_list.js 这个文件太大了 有点恶心

johnbao6 commented 2 years ago

车次信息数据应该是过时了,只能下载到 2019年的数据