12306火车票&高铁query所得数据格式分析
初次抓取火车票查询数据时,采用的是正常的浏览器点击查询使用的链接:
但是用urllib抓取到的数据发现并没有网页上显示的余票数据,后来发现,余票信息与上面网页信息并非同步传输到客户端,如下图:
通过上图,发现最开始得到的数据并不包括余票信息等,如下图为前200ms所获取的信息。
下图为获取余票信息的时间段:
二者获取时间并不同步,用python的urllib抓取时得到的网页信息仅仅是前200ms时的链接所获取的信息。而init这个请求所得到的数据中不包含余票信息。
而真正获取余票信息的请求链接为上图,链接地址为Link。
下面对query请求获取的数据进行分析,以上面链接为例,抓取到的数据如下:
{"httpstatus":200,"data":{"result":["vofXmbbkb1Nz8xM%2BkuCKGhjAUqN9iDoOKQBVX178kNXx0sXtYXs7MuuhrlWKfv5wE0RdYqo2JXZ4%0AOQAynYKINe29oVR0J6TOmtq0hS2LEE7t12V7OB4Kv86QD1fKdREhPCLTwU0Kxi8svm3v5azja38l%0AWP%2BYCYJEEhgM7HPTXNRyy02jGwFvJp50WBfT2lRgHhkI2qu159Mk6a49LQwmOS04%2FuMsqTvp9xKT%0AWeIDfaZsy3H6LyV5YWbLsVb5oGF2UiMKgQnbI6IFMi2QxjICGh5rqxjV0n6M0%2BVhEqLMIic%3D|预订|270000G69804|G698|TNV|CWQ|TNV|WHN|10:46|16:50|06:04|Y|rtsg2MhJvoiWoWway%2B1F89mW6xaNyGWfgU%2Bw6iz7udoZB7N0|20200829|3|V2|01|11|1|0|||||||||||无|无|5||O0M090|OM9|0|1||O048600000M0778500009152450005||||||1|","c61tBPxABcr0%2BpSDdYNXd21hB%2Fmz0KDLSb1xbdqPD3Ex95kqOF0XcoqeYsE1jQpru4e22DckaVAL%0AFGJFN19GxpDZ5h9Y8kYmMxad92GAtqiqcO46Zj4Fd0aMUWROhtLw%2BtjCKDk3H4klJJ1y53jjp7DJ%0AeP8G3ygKWnF4CPZGsitt4CY7merjuWLcfe5FkFTOH9e07LsYhplxSqASb41j0%2FMh%2FJFbbkITSZQB%0ArhkDBbKuoI2hYbLrHXK%2BlsdTAvvilRoxdrwudBtL4zpnI9l5jiqPazAxYXt%2BlC9Fa2%2BjXNUGaZWL%0Ai2oIFA%3D%3D|预订|270000K90322|K903|TYV|XKS|TYV|WCN|11:11|07:39|20:28|Y|OLpiLP2sud3IFGpLky7lDsGZQXqIJaIxUsLQdpACi%2FIa7NIsREqIeGMzmh4%3D|20200829|3|V1|01|19|1|0||||无|||无||无|有|||||304010W0|3411|1|1||3026150000404095000010152500211015253000||||||1|","iDrKIiAHMN%2BjuR29zLguCtwF8VGSOR4GyRodSNlyWLGm65VockZZt8oP3KL7t2J5B0GltvOr6Jk1%0AH0GTCQ0MLWEsuIyid5XKxr26Y%2FRhjoULzREGOge3aoT7NvlfXH8WnULvhcs2lYfl7f021RVYEnSi%0APDlT8vK%2BL5YRRdNQNBCJZBK5LziqSsdB7c6To%2F4tAERi2FLHlcodMRCLAXZ5WRf7rHJAf16hBg2b%0AuVXKPxs8F9eTgHngpTQJIr2U19Ob2m10AIEcm%2F6Fqx5tCDj3YYSfVSorn0KgMvntLDu2INg%3D|预订|270000G69405|G694|TNV|WHN|TNV|WHN|16:37|22:29|05:52|Y|WTSu%2ByhaHXiwUBTesZRJYd1cPYbcdQyPy%2Be%2F3YurDgs2G3Kh|20200829|3|V2|01|10|1|0|||||||||||有|有|9||O0M090|OM9|0|0||O048600021M0778500219152450009||||||1|","oBZGG1QY8KOmf9d%2BlMhteT416eWMNnYhpKtv6VlRDCYKJ8PxVnTHo1JUcF%2BnWgvwVS9lLipVAMQu%0ACeHjM7NVACGHVxpD96ZgjTQEexA68ffINe8iQ%2BHiMURLkR115%2F957XOksi1GJhRPcjTo0bPx%2FWi1%0AhkD8E1dkjgJ3duBt%2FkmLH0jhqHwoJ77y1Hf7YHSoSu%2FKUhgLkt6kOCi5e32cRFVZxn%2FfD%2BI0D1HQ%0AQlc7Wfcr%2Bz0HaakIOPK2%2F3O2ONNJ1V5x%2BB7WQk63gDWr1yFNH7DhT5PiT4WzpckJVlhEQqJT4v9w%0A8ztThQ%3D%3D|预订|270000K2370G|K237|TYV|OSQ|TYV|WCN|23:19|20:35|21:16|Y|U0UT8cGClt7txSrduru2BmuZCSyAQ67EQVAWyqk7f07R3eydtzxuZcVdEJc%3D|20200829|3|V1|01|25|1|0||||无|||无||无|有|||||403010W0|4311|0|1||4046450000302965000010173500211017353000||||||1|"],"flag":"1","map":{"TYV":"太原","WCN":"武昌","WHN":"武汉","TNV":"太原南"}},"messages":"","status":true}
高铁信息中余票数据段如下:
|无|无|5|
上面那段余票数据正好对应网页信息中的——二等座:无;一等座:无;商务座:5;
火车信息段中的余票数据段如下:
||无|||无||无|有||
上面的余票数据正好对应网页信息中的————软卧:无;无座:无;硬卧:无;硬座:有;
以上数据对应关系均按顺序排列,为防止数据格式更改造成使用出错,本次记录时间为2020/8/22。