操做系统:Windows Python版本:3.5.2python
当你想查询一下火车票信息的时候,你还在上 12306 官网吗?或是打开你手机里的 APP? 下面让咱们来用 Python 写一个命令行版的火车票查看器, 只要在命令行一敲就能得到你想要的火车票信息!若是你刚掌握了 Python 基础,这将是个不错的小练习。 效果图: chrome
若你的环境中没有requests模块,直接使用pip安装。浏览器
pip install requestsurl
注:Requests库使用介绍详见 https://blog.csdn.net/i_chaoren/article/details/63266154操作系统
首先咱们打开12306的票价查询页面: https://kyfw.12306.cn/otn/leftTicket/init 以chrome为例,按下F12打开浏览器开发者编辑模式。随便输入起点终点,和开始日期,点击查询。.net
而后你就会看到开发者模式的network选项里会显示出来浏览器页面加载的文件,就像下图这样: 命令行
咱们来仔细看看这个url里面,train_date,from_station 以及 to_station 是否是分别表明着火车出发日期,始发站,终点站?3d
咱们直接把这个url贴到浏览器里看看: code
对了,这其实里面就包含了咱们须要的火车票信息数据!!!cdn
那咱们是否是只要在代码里把咱们本身须要查询的火车出发日期,始发站,终点站填进这个url,而后把返回的这些数据过滤一下显示出来就好了?
可是且慢,细心的同窗会发现,from_station 和 to_station 里面的都不是正常的中文地名,而是代号,咱们不能直接把中文地名填进url,而是须要把中文地名转换成代号,那这个代号又是哪里来的呢?
咱们再看这个url请求12306响应了的东西:
能够在“map”里看到,城市火车站代号和城市火车站是有一一对应的关系的,那这些一一对应的关系又是藏在哪里的呢? 咱们点击开发者模式的Sources选项,通过耐心查找,咱们发现了一个东西,见下图:
看名字是否是以为发现了什么? 咱们把这个路径写成url贴进浏览器试试: https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9098
就这样成功发现了全国的火车站的名字及代号对应表!!!
因为 12306 的接口常常变化,本文提供的代码可能会很快过时,若是遇到接口问题,须要根据最新的接口对代码进行适当修改才能够完成这个应用。
好了,那如今代码的实现思路就有了。 我来给你梳理一下:
关注公众号「Python专栏」,后台回复「12306」获取完整代码~