获取12306列车时刻表的一点个人思路
Database这门课的大Project是要做一个类似12306的数据库系统,不过在写框架之前总得有样例数据才来的安心。这篇文章闲来无聊就先写一下自己的思路吧。
准备工作
2020年之后12306.cn经历了大的调整,原有的教程大多都已不可用,不过还有少数接口依然保留而且有在返回较新的数据。
首先感谢GitHub Developer metromancn的Parse12306,主要思路大部分来自于他的成果。
经过实测,目前可用的有车站信息和车次信息两个接口。
那么,接下来开始轮询时刻表获取完整车次信息。
通过访问12306官网,得出对应URL(以2020-04-06日的Z3次列车为例):
除此之外也得到了关键词检索得出全部相关车次信息的接口,不过这次Project并不需要用到,所以先放到一边。
得到以下两个搜索所需的变量:
车次号
1 | leftTicketDTO.train_no |
出发日期
1 | leftTicketDTO.train_date |
接下来的工作就很简单了,不过在此之前有几件事需要注意(SOURCE: Parse12306 from GitHub):
a) 部分车次仅在特定日期运营(比如:工作日,周末,节假日等)
b) 同一车次,在不同日期,运营时刻和停靠车站可能不一样
c) 同一车次同一列车编号,在不同日期,运营时刻和停靠车站完全一致
开爬
晚上懒得写代码了,就单纯记一下思路,早上起来再干吧。
- Merge车次,去重后获得所有车次编号和相关信息
- 用车次对应的train_no查询时刻表获得JSON文件
- 解析之后整理,导出为CSV格式方便后续导入数据库
当然,也不要忘记保留车站和车次信息,同样导出为CSV格式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LoveCany在这!
评论