12306票务查询
一、我们要做什么?
我要的就是输入出发城市、终点城市、日期就能获得相应的实时车票信息。
二、寻找信息所在的位置
显然易见12306的网站是一个动态的网页,他们的信息都存放在了一个包里面,如下图所示
三、如何拿到该数据包
1、那么我如何才能拿到这个数据包呢,首先我们要知道获取到这个包要提交如下的表单
聪明的人都会很快知道其中的vap和shh代表着一个城市,那么我们程序首先要写的就是获取这个城市的编码。经过我们仔细的发现就能知道该城市相对应的编码存放在一个js文件里面。
表单中的第一个代表的是日期这是显然易见的;第二个和第三个代表的为始发站和终点站;第四个默认即可。
2.当我们做好这一切发现我们依旧无法获得该包,这是因为还需要携带cookie值才能对其进行请求。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210115130503428.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzU0NDEwNDA5,size_16,color_FFFFFF,t_70
唯一需要注意的就是要对jc_savefromstation 和jc_save_tostation。拿一个进行说VAP是我们刚才js中得到他代表的就是北京北,北京北%2代表呢也是北京北。
总结来说就是携带cookie值提交表单对包请求即可获得实时的票务信息。
四、信息的处理
如图所示,该段即为一个车票的所有的信息,但是前面的东西都是没有的用,我需要用正则或者split来提取到从预订之后有用的相关信息。
五、最后对数据输出
为了好看点嘛,我们可以使用PrettyTable进行输出,最后打包成exe结果图如下: