12306高铁数据全量抓取:从Excel时刻表到交互车站地图的完整链路
12306高铁数据全量抓取:从Excel时刻表到交互车站地图的完整链路
【免费下载链接】Parse12306分析12306 获取全国列车数据项目地址: https://gitcode.com/gh_mirrors/pa/Parse12306
跑完之后手里有什么
跑完这个12306数据采集程序 Parse12306,output目录里会有两个文件。一个是"全国高速列车时刻表_20160310.xlsx",打开后能看到全部C、D、G字头车次的起讫站、发车时间,以及每个停靠站的到达、发车时间和停留时长。另一个是"全国高速列车车站_GMap.html",用浏览器打开就是一张全国高铁车站分布地图,点击标记会弹出站名。需要说明:程序本身产出的是各步骤目录里的CSV中间文件,这两个文件是项目作者把中间结果整理成的最终形态,随仓库一起提交,供我们对照最终效果。
数据源与处理链路
工具直接对接12306官网。作者分析了网站前端加载的两个JS文件:一个是全国车站名称表,另一个是约35MB、覆盖未来60天的车次列表。程序用车站的电报码(12306系统标识车站的三位字母码)拼出查询URL,逐个拉取每趟车的时刻表。说白了,整条链路就是抓取、解析、去重、落盘。同一车次号在60天数据里会出现多次,去重后才能得到一份全量车次清单。核心逻辑都在src/Parse12306/Program.cs一个文件里,约800行,作者把流程拆成7个步骤,每步可以单独执行,代码量不长,值得翻一翻。
从零到跑通
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/pa/Parse12306 - 用 Visual Studio 打开解决方案文件
src/Parse12306.sln,完成编译和依赖还原 - 按 F5 运行,在控制台依次输入 1 到 7 执行各步骤,输入 Q 退出
- 到程序运行时创建的 output 目录下查看 step 子目录里的CSV文件,最终形态可对照仓库里自带的示例xlsx
依赖方面只需第三方库 Newtonsoft.Json 8.0.2,版本见src/Parse12306/packages.config;项目基于 .NET Framework 4.5,是 Windows 控制台程序,在 macOS 或 Linux 上直接运行需要额外准备。
打开Excel后先筛什么
Excel 以车次和车站为两条主线。车次表的类型、起点、终点、服务等级、开行日期这几列最适合筛选:按类型筛可以单独对比G与D的铺密程度,按起点筛能看到某城市发出的全部线路。时刻表页有站序、到达时间、出发时间、停留时间列,适合做透视:以车站为行可以统计每个站有多少车次经过,以停留时间为维度能看出哪些站停得久。
HTML地图依赖 Google Maps 外部脚本,国内网络环境下可能加载不出底图。交互能力到两层为止:缩放地图、点击标记弹出站名,适合回答空间分布类问题,比如东部车站密度和西北的差距有多大。
适用边界与延伸阅读
适合:
- 线路与时刻表的基础数据集建设,用于运营分析
- 开发出行类应用时,作为车站与车次的参考数据
- 学习JSON解析、大文件分步处理的样例
不适合:实时查询。README里写明2016年后12306经历大改版,抓取方法需要更新,仓库中示例数据停留在2016年。
延伸阅读:想深入看抓取与去重逻辑,从src/Parse12306/Program.cs的Step5开始读即可。
这个工具把官网散落的JS和JSON变成了表格加地图两件可直接使用的东西,数据时效是它的硬限制,但整条抓取链路仍然成立。
【免费下载链接】Parse12306分析12306 获取全国列车数据项目地址: https://gitcode.com/gh_mirrors/pa/Parse12306
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
