python 爬取12306数据

学了好久的 java  换个语言试试 就选择了 简单易学的python ,学了一段时间看到别人都在爬取12306网站的数据,我也尝试尝试,发现 12306网站的数据更新太快。返回的json数据变得越来越复杂:现在时间是2017,04,06 估计过一段时间12306网站就会改变json数据 此代码仅供参考。

爬取网站数据之前先分析这个网站的url

分析12306网站的请求的url:


用Firefox获取12306的url: 以上海到厦门的 出发日期为2017-04-15为例子,获取查询的url:

https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-04-15&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=XMS&purpose_codes=ADULT


可以看出发送的数据带的参数有:2017-04-15,SHH,XMS,ADULT四个参数。

第一个参数是日期 第四个参数是成年票 中间两个参数是 出发站和终点站

注意了 出发站和终点站不是我们输入的中文 而是一个通过字典查询而得到的字符,我们要想输入中文通过程序获取数据必须先转换成规定的字符。


查看页面源代码发现:一行红色代码表示的js文件 点进去发现里面有各个城市的字符。下面的代码就是12306网站各个城市的字符表示的字典

<script type="text/javascript" src="/otn/resources/js/framework/station_name.js?station_version=1.9002" xml:space="preserve"></script>

用程序将此字典写出来: parse_station.py

url='https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9002' #根据查看源码查出来的
response=requests.get(url,verify=False)
stations=re.findall(u'([\u4e00-\u9fa5]+)\|([A-Z]+)',response.text)#用正则表达式 来获取车站的拼音和大小写字母的代号信息
pprint(dict(stations),indent=4)


用命令行将此字典写在一个py文件中,stations.py



然后在分析 返回的json数据. 先看响应的数据:

{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":[{"queryLeftNewDTO"
:{"train_no":"5l000D314512","station_train_code":"D3145","start_station_telecode":"AOH","start_station_name"
:"上海虹桥","end_station_telecode":"GZG","end_station_name":"赣州","from_station_telecode":"AOH","from_station_name"
:"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"06:40","arrive_time":"14:45"
,"day_difference":"0","train_class_name":"动车","lishi":"08:05","canWebBuy":"Y","lishiValue":"485","yp_info"
:"m52w2TqEAiUy4fp5Yhf9RSKLy8fYunac6Rvz%2BapxcyDM%2FRIC","control_train_day":"20300303","start_train_date"
:"20170415","seat_feature":"O3W3M3","yp_ex":"O0O0M0","train_seat_feature":"3","train_type_code":"2","start_province_code"
:"33","start_city_code":"0712","end_province_code":"11","end_city_code":"1116","seat_types":"OOM","location_code"
:"H2","from_station_no":"01","to_station_no":"20","control_day":29,"sale_time":"1330","is_support_card"
:"1","controlled_train_flag":"0","controlled_train_message":"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num"
:"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num":"有","yb_num":"--","yw_num":"--","yz_num":"--"
,"ze_num":"有","zy_num":"有","swz_num":"--"},"secretStr":"nfn4wDH5X4a1vcnTjm0%2BeXM8bWAORj9iPaHN28iazhITSi1T5RUXG
%2FoqOFubH39x6wO2rnpzDE37%0AeZSDCB%2BdDaLYYH42sZEJxvMx%2BkAwtrNTnfJNdyBUO59Rkaxl63hhlk5jkZqdrhIZPBcztuc
%2FsS4l%0AzhM5P%2Fj5qDYHmvTEcO5AvtKGACYjQF%2FOgoqviA3a2iNR2dYMqPuzZ6Tz8oKRq%2Fje5ULyOAg2GBaN%0AqmorXR2dZk5q8Wg5ENo7J8JXm5olpk4LTMLzrk28AP8LBjARFFT
%2BGWq04SLFpYHxJWmPLhm3ertT%0AjmHWk2dVPko%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000G165120"
,"station_train_code":"G1651","start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode"
:"XKS","end_station_name":"厦门北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode"
:"XKS","to_station_name":"厦门北","start_time":"06:56","arrive_time":"13:31","day_difference":"0","train_class_name"
:"","lishi":"06:35","canWebBuy":"Y","lishiValue":"395","yp_info":"yCm1bXivTrL%2FS%2F9eRWzYU%2FZPcTBcWQCU6Mvfm6FkQnjFcLwq"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M393","yp_ex":"O0M090"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"10","end_city_code":"1010","seat_types":"OM9","location_code":"H3","from_station_no":"01","to_station_no"
:"16","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"--","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"16","swz_num":"6"},"secretStr"
:"cg01CuAKMpsM4AnHHJKYCALvgd%2BVYRbq6%2BCYVkF3hl8ln%2FEe1DRY%2BGMopjaOYYy0%2F%2B4kKSE13KoW%0At8rbl%2F
%2FIAZNN1oLWJdfaIR76EYShm3OC4tl77SQv4IUA2IH0PpjJuX2Kr4a3514QRNBs7peEdwMo%0A8hV7eQywPUeS5s5V22wkjU1AJlOJcnsSZCBUdQjf7EEME244Q7CpIOkciiSvr0AoJwbOR6a1jyIE
%0Ayt176eLyy%2Fdso1Qab59HRXmUOumExwfEWEgGtQHAtESY554eS4niNpDjgnS4tx9nh9LciR7iGbeg%0AP4MnXsKg6b4%3D","buttonTextInfo"
:"预订"},{"queryLeftNewDTO":{"train_no":"5l0000D37961","station_train_code":"D379","start_station_telecode"
:"AOH","start_station_name":"上海虹桥","end_station_telecode":"XKS","end_station_name":"厦门北","from_station_telecode"
:"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"07
:02","arrive_time":"14:51","day_difference":"0","train_class_name":"动车","lishi":"07:49","canWebBuy":"Y"
,"lishiValue":"469","yp_info":"FXS%2B0m5NX3zpIN7dUTz%2FqHkc1Mi2DC%2Fla9wxjBj63wRGpL7I","control_train_day"
:"20300303","start_train_date":"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0","train_seat_feature"
:"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code":"10"
,"end_city_code":"1010","seat_types":"OMO","location_code":"H2","from_station_no":"01","to_station_no"
:"19","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"有","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"有","swz_num":"--"},"secretStr"
:"OxNVARwGeXP4NsCKH36O5EfnJ4LSNwjZI6g531wXEKV2nkWvA6XYcqj12xetxBTbmy7COlEmQsOn%0A4jAd3w19F1FtHH%2FM6K3zioH8e56EGmNkjULThZ8361
%2FbhMVj4fAqHTimODJE1B3rByuPpN1VQRLo%0A0KIUBekY3c7D7h8349yvc6Oc%2Fi7KAYGrd1xR3XCasHTeb%2FOvHSLpSv1RDsPkKbbRYeDmGdqR
%2F1hk%0AiGo3j%2BLYLxpdDVTP260ZrAlb5gDuPLOEVldpkkoiwb2sYoGHMdw7bSHpPixZLLpeW%2Fzngj3iz%2Bk6%0AHpjaOyuE7Ng
%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000D313141","station_train_code":"D3131"
,"start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode":"LYS","end_station_name"
:"龙岩","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"07:37","arrive_time":"15:24","day_difference":"0","train_class_name":"动车","lishi"
:"07:47","canWebBuy":"Y","lishiValue":"467","yp_info":"J69f%2Bx16C6c5t2ZMZpydMHJyD0O185fCYvQSWAamHhOOmY6j"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"10","end_city_code":"1008","seat_types":"OMO","location_code":"H2","from_station_no":"01","to_station_no"
:"19","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"有","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"有","swz_num":"--"},"secretStr"
:"DgXerjtxxBpI4sEdNBEt8sw6hg5ngxIQqHgYVkmNWyL%2F%2Bj5fwJ8H6Hr4f4zhEvMeNwDG2luMs%2Fn7%0At5amG%2FCsnEetHHupaUEUFfOUO5xli8COdRJkAfsw2BurhFtge9
%2B2CBrSTm1dCCz88ZFAJ50%2B8aU5%0AJLQvKKOsm8kzxH0SD%2FcO%2FPP1KV9QAkrsQPR8nuuhNQGM1XEJXTi70pJS9u2EXfz3WtXQzr
%2BhEinG%0A5bKwF%2FJmuUIDO%2FVDB74%2BUfBoJpGsz9cLsYe8IukYdGhdjFyfwxujFtmz3IOmUKyK%2BNPJCyERHIj7%0AdbJRtr8
%2F8Qk%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000D228732","station_train_code"
:"D2287","start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode":"IOQ","end_station_name"
:"深圳北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"07:47","arrive_time":"15:39","day_difference":"0","train_class_name":"动车","lishi"
:"07:52","canWebBuy":"Y","lishiValue":"472","yp_info":"M3FI%2B3%2BMitREyebtofZjmY%2BkScD4GMjuoYvd3%2FXtp0MRg5Gc"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"16","end_city_code":"1505","seat_types":"OMO","location_code":"H2","from_station_no":"01","to_station_no"
:"18","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"有","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"20","swz_num":"--"},"secretStr"
:"2XBCLjNDUUD%2Fi5Gz%2BJDsNJprCAngK2IdM8ZS7%2FyN784w76BFs6XlpoXweiR%2Fce%2BLCPQ7GYlY7I6s%0AfwLmnqjraWlyQo
%2FjA8kFtG%2F8%2FpEBFg0WgBy8kWJtQr8SkOMm91kG%2FmPg9agpN4hor2gPClrE1jV4%0AN%2BnsjUZu9kl%2F40wect8FC7YtIALR5pLtG4
%2F0jXwNakWbkEB%2FtP7e%2F1ZLScabhzBMXifAQxhSnw0m%0A7%2FNr7CrzlAI3zGwj1yOjbdS6lpIJLeYU1e7PS3z0r%2BTloXiL0KNGTzsozFWh9npDbCKadZFOpC
%2BB%0A1GmZ3KWSW0Q%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000G165340","station_train_code"
:"G1653","start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode":"XKS","end_station_name"
:"厦门北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"08:15","arrive_time":"14:40","day_difference":"0","train_class_name":"","lishi"
:"06:25","canWebBuy":"Y","lishiValue":"385","yp_info":"wzGmxyz%2BnCa86MzmWs6ROwj2vzxW08v7BAACl60FlUnzW5Ue"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M393","yp_ex":"O0M090"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"10","end_city_code":"1010","seat_types":"OM9","location_code":"H3","from_station_no":"01","to_station_no"
:"14","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"--","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"7","swz_num":"7"},"secretStr"
:"gVepie42upRbMrkshtszP1a5jybIkOQ9ILFjOJriM3aO%2Ft6x%2BU%2BIhjAHhRQp%2FHms5TxosRHI2d6h%0A59AacZbqjL9rfY
%2BSLXPZNQnVDndozRpPqJBGEXZzuNB9pFZKDDhfCBxqOMzjCkcRuTyuSsUhjGeO%0AE9yZuLtsqLgKUmFbJ8zzOVO07%2FN%2BhcJBxMBCUb6dwidL5TO2IgrPLNzL
%2BLucwieNtnAabqVJ1ZsO%0ACgkqCCO%2FUotUlF8Wr1RXqsv%2F0TiWRqQuCOmK6D2fS2YkahP5eFOVJD2f11q6rWlqPQ7H1BjqHXAe
%0AEZ3bdcFOr5o%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000D320191","station_train_code"
:"D3201","start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode":"XKS","end_station_name"
:"厦门北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"08:20","arrive_time":"16:15","day_difference":"0","train_class_name":"动车","lishi"
:"07:55","canWebBuy":"Y","lishiValue":"475","yp_info":"qb6wctGkQMt8Y%2FpwDKe%2FTSmLJEIMZXscLxDj4oL4VV05xg1c"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"10","end_city_code":"1010","seat_types":"OMO","location_code":"H3","from_station_no":"01","to_station_no"
:"19","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"有","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"有","swz_num":"--"},"secretStr"
:"W2bE9EVVG9%2BTu9OiM9qkg%2BnVtyW0BNetloJIDSzWLKE8MRTbXnyw69C9K1GhuRU2veWT%2BiymcYKn%0AkA7TJe9nK3aT2bO4toervH2sfjVSmhjXIve
%2BfmgFkR5nGmVpBQfbE6%2B%2FN3xmvvotEnNT5Qzk4VUv%0ACOyAvZnhu6vWSe780txN%2Fg5LsZzDAaY8aqPQ6mNg9AuNjdT7Z
%2BHqPw%2BXGVgPRjB635Df7tY3StZb%0AiNV9hAWBUtsZbCRXOWHCCv1JelhrcxbkHpuGNJJupSVYjSlhtYG3lGRTUu6AZEfLuzTF1zof3
%2FRd%0Apf6ZdtfG2vQ%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"54000D312511","station_train_code"
:"D3125","start_station_telecode":"NJH","start_station_name":"南京","end_station_telecode":"IOQ","end_station_name"
:"深圳北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"08:49","arrive_time":"16:53","day_difference":"0","train_class_name":"动车","lishi"
:"08:04","canWebBuy":"Y","lishiValue":"484","yp_info":"2zVLB%2BBDRl4SVIzcqNFxNTmPwEHWqsEr%2Bo1rdRidxO6tr2fd"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"07","start_city_code":"0705","end_province_code"
:"16","end_city_code":"1505","seat_types":"OMO","location_code":"HZ","from_station_no":"07","to_station_no"
:"26","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"无","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"20","zy_num":"10","swz_num":"--"},"secretStr"
:"xd5%2BzR%2BgOFZfAr4OZkyYDly7HZxNh32NTz00RHSxJi%2Bo96x%2FVGR%2FLybwYWwxnu3AQ0ZBqoEKo12C%0A2pQwjFUVleKYDRdJLjKZ0nifOHbwsNaDIkXgoZLOgri6PFgMymqtPQhXxAONuOrd10p7G
%2FpOTS2s%0AGt6W9GPvlvphas5m%2FvvxNcqVwmAdSvAWPedd6i7ldr%2F9hgV8RIGhpLZLDZ5sxxOl421giTH13wQi%0AZQeNYaQnzKqtbKu
%2BY%2BjkJXDiOmM78B9vXlxDHuKZ68GYqfVLxhpc1%2FHZrMcMDE1Di3XvNmPycddg%0A2dddL9NtFSg%3D","buttonTextInfo"
:"预订"},{"queryLeftNewDTO":{"train_no":"5l000D228521","station_train_code":"D2285","start_station_telecode"
:"AOH","start_station_name":"上海虹桥","end_station_telecode":"IOQ","end_station_name":"深圳北","from_station_telecode"
:"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"09
:05","arrive_time":"16:59","day_difference":"0","train_class_name":"动车","lishi":"07:54","canWebBuy":"Y"
,"lishiValue":"474","yp_info":"2TM8odGmbyMaYmKdQQx%2FfqHG2o3%2BxTuwOG5Pm18c%2FTRk%2BcMt","control_train_day"
:"20300303","start_train_date":"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0","train_seat_feature"
:"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code":"16"
,"end_city_code":"1505","seat_types":"OMO","location_code":"H2","from_station_no":"01","to_station_no"
:"20","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"有","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"6","swz_num":"--"},"secretStr"
:"RuWI9TF8tj66QmzCv5C44hYv89EB1oBhnvPrk7s7qidd%2BmngigfysUvtUePIQ0Fg71PDTpQ8j5%2B4%0A2ME6i0mHwptmLYVBzJnge46c
%2Fl1HOlLPzUQ8W55M1VnLmYkt79kJmj6gARX%2F88Dd5b5BaLip3L3F%0AEAvSSWjl797dJiXDWg9KMJYED1nh%2FkF9Mjkli2TlzvJlVMkHOYhd4tPdbLDZ7y
%2FprBr9epDV81Vo%0AFS8fRfKXJwbQrDStPnPSCPCVmgJ2n7pKcWCRxMcfqu2gwfYTOGn%2BFq32zv1hR%2BtFCCqVRFX%2Fv72F
%0Aerpsk1MuBls%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000G165512","station_train_code"
:"G1655","start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode":"XKS","end_station_name"
:"厦门北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"09:23","arrive_time":"15:44","day_difference":"0","train_class_name":"","lishi"
:"06:21","canWebBuy":"Y","lishiValue":"381","yp_info":"%2BYnVoHFLBSE2vwM1RSLMp16Pgyhr9XXdKy0rcQ2%2Fk2VEmQK
%2B","control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M393","yp_ex":"O0M090"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"10","end_city_code":"1010","seat_types":"OM9","location_code":"H3","from_station_no":"01","to_station_no"
:"14","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"--","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"无","swz_num":"5"},"secretStr"
:"vpzKYRYxy8EyxckKRpX7MsZMDGcMZq9HnMstHRBbnjPyglVoKQ54tWBn6tN%2FkXTVNDJeR%2BgyMzpe%0AXi0hQD%2BQEWjROeaGaTCkbLDpSFzxFRRH0rD2CUJB2Uk1AdasinRkj9krjwAtON36
%2BglX8z14zy91%0AkTJ7GgzgFiQ9Jgx8uDansPIYQ5HsrwthTvW%2Bi81%2F4adKYuFetRc1JHBREPHLnRMZJAp077PnoSxd%0AOWIQDjHdaiXqx6tCEld85MOuKQ
%2FLdwGi4YUV1Eb23C49iCzG9V8fMb%2B4JboX%2FYNY%2B0SCLoWPuo2h%0AY655pQ2e7v4%3D","buttonTextInfo":"预订"},
{"queryLeftNewDTO":{"train_no":"5l000D3205A1","station_train_code":"D3205","start_station_telecode":"AOH"
,"start_station_name":"上海虹桥","end_station_telecode":"XKS","end_station_name":"厦门北","from_station_telecode"
:"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"09
:35","arrive_time":"17:22","day_difference":"0","train_class_name":"动车","lishi":"07:47","canWebBuy":"Y"
,"lishiValue":"467","yp_info":"xYld9T1jTFh9iSF6PInDYJYSeLn8pI44%2FL6De13uqinCGJCp","control_train_day"
:"20300303","start_train_date":"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0","train_seat_feature"
:"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code":"10"
,"end_city_code":"1010","seat_types":"OMO","location_code":"H2","from_station_no":"01","to_station_no"
:"18","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"有","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"有","swz_num":"--"},"secretStr"
:"ftqEeEE3BI6uVgzrlAkcuS6jwZktUNdiy%2BaWrzz9FHJ7Yvda4VbkSEmcjjiUO8i1cPoKXU1J%2FOrN%0A5WKhJ2v1qABLN3EFKQcqpncL22BW4MWk3QsDuNFulTUOtMjxqCleYSxvbUskAPYPMHqgbNXybLf8
%0AYuQIKEYZqAEKn9C5C6nT7it2eeT55df96rGHhMjf5j3PrD8Q%2B0RUdiJnU8WqEwGS0WGPstQD0bXc%0Ao44GHAVf4Y5AWJZ3JpsB1jFl1fNiWsiqwaTfPJ
%2BaWeJwaZw%2B0yorii8zYs7QuSUpOhm3PW3FFaT%2F%0AQvGNdtjzlvI%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO"
:{"train_no":"5l000D3107B1","station_train_code":"D3107","start_station_telecode":"AOH","start_station_name"
:"上海虹桥","end_station_telecode":"IOQ","end_station_name":"深圳北","from_station_telecode":"AOH","from_station_name"
:"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"09:40","arrive_time":"17:52"
,"day_difference":"0","train_class_name":"动车","lishi":"08:12","canWebBuy":"Y","lishiValue":"492","yp_info"
:"ejyQrPO987YNYVofpEzoRumw%2FUiKp65B1KGbvC5EqOqFxwlR","control_train_day":"20300303","start_train_date"
:"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0","train_seat_feature":"3","train_type_code":"2","start_province_code"
:"33","start_city_code":"0712","end_province_code":"16","end_city_code":"1505","seat_types":"OMO","location_code"
:"H2","from_station_no":"01","to_station_no":"20","control_day":29,"sale_time":"1330","is_support_card"
:"1","controlled_train_flag":"0","controlled_train_message":"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num"
:"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num":"有","yb_num":"--","yw_num":"--","yz_num":"--"
,"ze_num":"有","zy_num":"8","swz_num":"--"},"secretStr":"dfLf2R2DGboFVjxL0Uqn0cExInNjtpCfSezQGjNWsDw3m26Vu6i1MuMJVIsUzPSQ06KN2MODYBkG
%0A91vzqrDvKAKRUCztBmKQaUJpJumCSXsyUy93Bpk8zUKN7L%2BgnGF0h4T69drUo%2FO7OXg4G99yecnY%0Ax1qOKxAIA%2BJrZPgFmmracQh
%2BChvU85vtRl0B3q7PIHTPjzRSnzciE2XrIVTLftiZmxaojhDNlbhR%0A7vx5e4m0%2BbteUFyrJ%2BLhRHxwQ93oPBYIqe57JoilyAlOaASAs
%2FR1djWdugXNA1QctERH5bGx1POV%0Aa%2FrKajRU4EA%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no"
:"5l000G165721","station_train_code":"G1657","start_station_telecode":"AOH","start_station_name":"上海
虹桥","end_station_telecode":"XKS","end_station_name":"厦门北","from_station_telecode":"AOH","from_station_name"
:"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"10:18","arrive_time":"16:46"
,"day_difference":"0","train_class_name":"","lishi":"06:28","canWebBuy":"Y","lishiValue":"388","yp_info"
:"HVS7vupsLhHxbt1Ks5yuBIQTTsNgYgFIVcR%2B%2BiKfzoj0kmqs","control_train_day":"20300303","start_train_date"
:"20170415","seat_feature":"O3M393","yp_ex":"O0M090","train_seat_feature":"3","train_type_code":"2","start_province_code"
:"33","start_city_code":"0712","end_province_code":"10","end_city_code":"1010","seat_types":"OM9","location_code"
:"H3","from_station_no":"01","to_station_no":"16","control_day":29,"sale_time":"1330","is_support_card"
:"1","controlled_train_flag":"0","controlled_train_message":"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num"
:"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num":"--","yb_num":"--","yw_num":"--","yz_num":"--"
,"ze_num":"有","zy_num":"6","swz_num":"5"},"secretStr":"heEel5pm3P7pJoUrb5mRAnCaCUU5D1YfGvrhNvYMjsCDa98izGU3VPANrU
%2BgoilMfcX1tb%2FqqSuC%0AsJK4LpyFO8m2AlHq8RohUSMbOpn79bNmTbDPQPYbTM3wuKYv%2FngpNUdPuEL6P6ddWw%2Fe%2F3Cbs5JH
%0A%2BiZ2AvdZVv055bRD0ZFI1hduL%2FyeYprSlFgl6BSN1E0PuhrahDKvid9%2F50Ejw%2Bs%2BunOOpNYeLmuI%0AEPhGLHqquhbVhzindOhyTS
%2BSjuIjpiOg3ODZxPCOd0XYsNlVw6nQjg0JmtkC9htT6nshcnkHr%2BmH%0At%2BhO8OveCG4%3D","buttonTextInfo":"预订"
},{"queryLeftNewDTO":{"train_no":"54000D228131","station_train_code":"D2281","start_station_telecode"
:"NJH","start_station_name":"南京","end_station_telecode":"IOQ","end_station_name":"深圳北","from_station_telecode"
:"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"10
:28","arrive_time":"18:10","day_difference":"0","train_class_name":"动车","lishi":"07:42","canWebBuy":"Y"
,"lishiValue":"462","yp_info":"6LUp7gqiImnEr690lIznc92ohOJWItOQ2sBbM2k7nDfArqBk","control_train_day"
:"20300303","start_train_date":"20170415","seat_feature":"O3W3M3","yp_ex":"O0O0M0","train_seat_feature"
:"3","train_type_code":"2","start_province_code":"07","start_city_code":"0705","end_province_code":"16"
,"end_city_code":"1505","seat_types":"OOM","location_code":"H1","from_station_no":"09","to_station_no"
:"27","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"无","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"无","swz_num":"--"},"secretStr"
:"ydNRUQwud7Hm1FUxdBqaJ4Qt2U7SmIj%2BHtKEV%2FR092Dr1tAZInsFAyd0o2Ulw8L9Z5HG8J%2Fu0lno%0Aa%2FYERu84cCirSYo8G
%2BkevpV6fzddA9koPuUyY%2FSQmW59X%2B4jXZg%2Bbpmp%2B7hnYGulWXKzcJK%2F1mVP%0A9ioHpTz8x2PCQA3YwAHiwmy6r1NsYPGuz2iC5yKvyvnMW278ai2tT4Frcxqy6d5RCSuXVfXEjLqm
%0Ad3O36nlOfO7nOwWM3YQUo2wC3P61tz5KERNJ4nfTMlkReMPjZmcSnaSDsxZK6tYKMHYPB5esXT45%0A%2BxBIN1JOjLI%3D","buttonTextInfo"
:"预订"},{"queryLeftNewDTO":{"train_no":"54000D313561","station_train_code":"D3135","start_station_telecode"
:"NJH","start_station_name":"南京","end_station_telecode":"GZG","end_station_name":"赣州","from_station_telecode"
:"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"10
:42","arrive_time":"18:59","day_difference":"0","train_class_name":"动车","lishi":"08:17","canWebBuy":"Y"
,"lishiValue":"497","yp_info":"mv1Z%2B0sGEyYgl4ARsajCU0Y63ipkw3qTQLci5w%2F0bz4MBt9e","control_train_day"
:"20300303","start_train_date":"20170415","seat_feature":"O3W3M3","yp_ex":"O0O0M0","train_seat_feature"
:"3","train_type_code":"2","start_province_code":"07","start_city_code":"0705","end_province_code":"11"
,"end_city_code":"1116","seat_types":"OOM","location_code":"H2","from_station_no":"10","to_station_no"
:"31","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"无","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"11","swz_num":"--"},"secretStr"
:"7UpJDBLLaN8T4IboL%2BILyrRDtI7nb6pOma7BOrDlxiggu3NbQM4LTo3XLL7%2FAvJliVfNl5S7tRb3%0Alq2S3D6o%2BMX7C0dplTs
%2BKhRZVuPRsJPdNaAc5fqGADFFZzekIWV3UiW75ovm5RRvskEb7nrwZGSY%0A3ZATTWuZ%2FwYxKpPZnXL5PK7gnZ%2FV28rIq7PzuT4Wa9ZroOlWsGZQeGjBB7nl9usUjTC5vK1MPPpM
%0A%2BA%2FZenZ9wXppchty2JLcTd3zFgMY5AHshWWSrfuowwMWXKosJmCxfgiI43xfzgesj%2F%2FBqxeEHHOW%0A3B0A0%2FabarI
%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"55000K120981","station_train_code":"K1209"
,"start_station_telecode":"SNH","start_station_name":"上海南","end_station_telecode":"XMS","end_station_name"
:"厦门","from_station_telecode":"SNH","from_station_name":"上海南","to_station_telecode":"XMS","to_station_name"
:"厦门","start_time":"10:59","arrive_time":"13:56","day_difference":"1","train_class_name":"","lishi":"26
:57","canWebBuy":"Y","lishiValue":"1617","yp_info":"RUd6oaXOZCGLfEFvwn8K3a5lFNVYq9VjpHNx7XhrBSTvO0%2FmF1Fnr
%2BDs2yY%3D","control_train_day":"20300303","start_train_date":"20170415","seat_feature":"W3431333","yp_ex"
:"10401030","train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code"
:"0712","end_province_code":"10","end_city_code":"1010","seat_types":"1413","location_code":"H3","from_station_no"
:"01","to_station_no":"19","control_day":29,"sale_time":"1530","is_support_card":"0","controlled_train_flag"
:"0","controlled_train_message":"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"有","rz_num"
:"--","tz_num":"--","wz_num":"有","yb_num":"--","yw_num":"有","yz_num":"有","ze_num":"--","zy_num":"--"
,"swz_num":"--"},"secretStr":"6QQfDRkCt3uCe0JCrR0WolBNr5fvXLHByLiVWGieQi8gfK27lJfUxoupahppi2pC%2F1buU6bBTxg1
%0AP6AiOFlg2cVmul3lzQiI8j0Il0yJvGuZoQCHrKKBZO6qcHMMbNl7PXv2v4g1xl5ObB0jbeI%2FJNyi%0Ay68T67NWJjcmx%2B3ubILtGfSISbKQV2n30kjoq81v7PlDGrS
%2BjjjhCQzdMTX1v1T0vxYLo2N%2BqxEu%0AZgQ8n9IlKgeWwtSaRNGBmGGUXUS8YGBmGSYGq2Gn0%2FuoV7cknQjok9KEItWvIF4gh6wXveohKxFi
%0AMamp8ONyBdQH%2FGtb","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000D228352","station_train_code"
:"D2283","start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode":"IOQ","end_station_name"
:"深圳北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"11:24","arrive_time":"19:04","day_difference":"0","train_class_name":"动车","lishi"
:"07:40","canWebBuy":"Y","lishiValue":"460","yp_info":"DNlf3Ig2fe5FURm5fy1Pi%2BHCb%2BYXx1DmFmc5xXQw8uQsf6WK"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3W3M3","yp_ex":"O0O0M0"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"16","end_city_code":"1505","seat_types":"OOM","location_code":"H2","from_station_no":"01","to_station_no"
:"18","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"有","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"无","swz_num":"--"},"secretStr"
:"Z%2BW1qtF9O4ciBKIhXn1QFsXPgpkptVOWHcbArw9phZ3AfEmYmic7RuRE%2FytaN5Gv8ipA2rL0FIki%0A37KUOR748kaip%2FpNyPn25PR9A0afw6Gu3zjc5kMwa7WM8ZcOvsrr67XhmwfkxdfkOIDmOxdLeToz
%0Ar6V5O01U7fw5t93McunVzzsTxbMGT6nYVuqPbDvl3X04qdWtgSJKU9BDX00eNRI%2FAejwtY0ZFz0o%0AapTaI2Phiic6U4Z2BKTnYqZJPXPcK6joKdA9tyj
%2FL7YzozDB2wJqEsU3cv8l8a5vD%2B%2BCmkfDF1U2%0APGk2HwBXROA%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO"
:{"train_no":"5l000D3207A3","station_train_code":"D3207","start_station_telecode":"AOH","start_station_name"
:"上海虹桥","end_station_telecode":"XKS","end_station_name":"厦门北","from_station_telecode":"AOH","from_station_name"
:"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"11:48","arrive_time":"20:12"
,"day_difference":"0","train_class_name":"动车","lishi":"08:24","canWebBuy":"Y","lishiValue":"504","yp_info"
:"zDtqDT0DfLr9Q0qNKRbarUNRpQGkhnJLGsazi0cGqMKe96iX","control_train_day":"20300303","start_train_date"
:"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0","train_seat_feature":"3","train_type_code":"2","start_province_code"
:"33","start_city_code":"0712","end_province_code":"10","end_city_code":"1010","seat_types":"OMO","location_code"
:"H2","from_station_no":"01","to_station_no":"20","control_day":29,"sale_time":"1330","is_support_card"
:"1","controlled_train_flag":"0","controlled_train_message":"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num"
:"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num":"有","yb_num":"--","yw_num":"--","yz_num":"--"
,"ze_num":"有","zy_num":"有","swz_num":"--"},"secretStr":"pO8bNvCWABcb7kt%2B6bWh%2BYEAIVXgZs1ul80kCux50ZG0pRIu
%2Fau001ue3WKaXr14j%2BxjkpLIb7M0%0AVRSUNX2g01epAmpL%2Fjq9dyPrgTrSotP1qbwUG3BWyFvdqfYZTVzGaK2V%2BY5EWb4DVebpfx
%2BcZvVd%0AlWFKKz0DQ6jKIf9vjZjs7%2B4zLr96QCofXEmjnIBEXZwwMPfA%2FAVcTRGwNSQW1t12%2FhVLb2pk0RMB%0AN%2B1MF7HniXz9pwDGCMCd5NIu
%2Br4zL%2B2vtnN9IOwX5xK6EQ3L41xmCxoSWo4Kf25rTjlYAo1DbJXy%0ArhlNBh74LmA%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO"
:{"train_no":"5l000D329121","station_train_code":"D3291","start_station_telecode":"AOH","start_station_name"
:"上海虹桥","end_station_telecode":"LYS","end_station_name":"龙岩","from_station_telecode":"AOH","from_station_name"
:"上海虹桥","to_station_telecode":"XKS","to_station_name":"厦门北","start_time":"12:15","arrive_time":"20:33"
,"day_difference":"0","train_class_name":"动车","lishi":"08:18","canWebBuy":"Y","lishiValue":"498","yp_info"
:"8WJdJTZEb2lEzmcXYhUMchJhw8suw%2B27RzF4xOMZgtDTZ630","control_train_day":"20300303","start_train_date"
:"20170415","seat_feature":"O3M3W3","yp_ex":"O0M0O0","train_seat_feature":"3","train_type_code":"2","start_province_code"
:"33","start_city_code":"0712","end_province_code":"10","end_city_code":"1008","seat_types":"OMO","location_code"
:"H6","from_station_no":"01","to_station_no":"20","control_day":29,"sale_time":"1330","is_support_card"
:"1","controlled_train_flag":"0","controlled_train_message":"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num"
:"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num":"有","yb_num":"--","yw_num":"--","yz_num":"--"
,"ze_num":"有","zy_num":"有","swz_num":"--"},"secretStr":"32n%2Fpqp%2FKtd1FyzZ6khzH7%2BNNqYBWZfSBAsW1Skob3f2u99JNdi4
%2FnOs4iFDVu7DxflxrWPWgc7i%0ASA%2BAKCPdC02nM%2F9aEUMh5cERdSnP54LzGt0ai1kkapz%2BdlkzR9qzrYOhSnwe7FKDNtTuTArTOufH
%0AfdIw4ankp6YzfWiII9iUUj8hqG0W373f7QTy3qGwFuhaayk4s87xUjSY%2F51CM%2Bxnz69apCNu2cT1%0AHVaa9Zj9t%2BCR88UDkc19nOEI6slz2vGLHsKDMwGp9YEZUGwFUo2V0H3CSTEPmJQau68NUevrWx
%2B%2F%0AkatLs2vYn%2FQ%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"5l000G165921","station_train_code"
:"G1659","start_station_telecode":"AOH","start_station_name":"上海虹桥","end_station_telecode":"XKS","end_station_name"
:"厦门北","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"12:57","arrive_time":"19:44","day_difference":"0","train_class_name":"","lishi"
:"06:47","canWebBuy":"Y","lishiValue":"407","yp_info":"Kz0I2pm7AWJtAEE1smayLIShRSIIlNyWgoOzPMwzCVKus8gJ"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3M393","yp_ex":"O0M090"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"33","start_city_code":"0712","end_province_code"
:"10","end_city_code":"1010","seat_types":"OM9","location_code":"H3","from_station_no":"01","to_station_no"
:"17","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"--","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"有","swz_num":"16"},"secretStr"
:"TYj5Sg5JKa%2FZ30cfhlRVMSmGWpGeIavwK8Ws4MTftw1RmF0Ogb50AXpKqLVeBFLZG4byeUEr9DEQ%0A7W9paUP1G39NyMAwU3xIgQUxfUm3QjI3kOH1JaatD7OgcWygyaSH37dyi1QCkp1NPJeqoKlgBRDi
%0ADaI%2BSxD4b%2F%2B60S6URg3B4MjsKLRFRRY1BAOr0xWetqGtADVyO4kmjnK3xbjIkYpdZM6MoeeQZNLB%0AusdFPIGJS2iEOOj7DAbwQjKV0UErCcM3DDGncPziZWJCqKt67m0JX1RiBzM3LXqQtObY9ysLCv5w
%0As7kyxP6kCuk%3D","buttonTextInfo":"预订"},{"queryLeftNewDTO":{"train_no":"54000D314100","station_train_code"
:"D3141","start_station_telecode":"NJH","start_station_name":"南京","end_station_telecode":"LYS","end_station_name"
:"龙岩","from_station_telecode":"AOH","from_station_name":"上海虹桥","to_station_telecode":"XKS","to_station_name"
:"厦门北","start_time":"13:19","arrive_time":"21:11","day_difference":"0","train_class_name":"动车","lishi"
:"07:52","canWebBuy":"Y","lishiValue":"472","yp_info":"tah06tClsdriIygBHjF1oav2eGuTy9L9cWdmerRhnOau3THp"
,"control_train_day":"20300303","start_train_date":"20170415","seat_feature":"O3W3M3","yp_ex":"O0O0M0"
,"train_seat_feature":"3","train_type_code":"2","start_province_code":"07","start_city_code":"0705","end_province_code"
:"10","end_city_code":"1008","seat_types":"OOM","location_code":"H2","from_station_no":"06","to_station_no"
:"25","control_day":29,"sale_time":"1330","is_support_card":"1","controlled_train_flag":"0","controlled_train_message"
:"正常车次,不受控","gg_num":"--","gr_num":"--","qt_num":"--","rw_num":"--","rz_num":"--","tz_num":"--","wz_num"
:"无","yb_num":"--","yw_num":"--","yz_num":"--","ze_num":"有","zy_num":"10","swz_num":"--"},"secretStr"
:"ycIfcVlppP506Y%2Bj8kF%2FRJyYkUs%2FMh%2FQO76LDEgPAbmNqHlKw%2F73ZbSntHqCynzU7brhJSGl9Xux%0AWHu8BrJbzG
%2B2DkMf%2FeSLnXkKV1O8DDzJOTtTaE73PdxbxSDeomJnp92Q7Tqfeu%2FVafehRh23xcsH%0AFCoSa29fwsSY1fIukoLpPjMjEXvpoXoua9NBUAiHPvV75Wcpt
%2Fqm%2Bp6IPNfza6CGwSbWB13Rg8yi%0AqmTKfVTXrcz5f7GNXx2lESBon1JTJp54YiHB7fOJG76BoxiBYVBfCn0HM7lzoFfJEugLY9dzMpf2
%0AO%2Bhfcgt%2FeCU%3D","buttonTextInfo":"预订"}],"messages":[],"validateMessages":{}}

可以看到,我们要获取的数据在 data 中的 queryLeftNewDTO 这个是嵌套了三层的json数据,开始遍历出来我们想要的数据。

def Hjson(json1,i=0):
    if (isinstance(json1,dict)):#判断传入的是否是json对象,不是json对象就返回异常
        for item in json1:
                # print("ss %s"%json1[item])
                if (isinstance(json1[item],list)):
                    for i in json1[item]:
                        # print("aa %s"%i)
                        if (isinstance(i,dict)):
                            for j in i:
                                if j=='queryLeftNewDTO':
                                    # print("你 才 %s"%i[j])
                                    # return i[j]
                                    print('车次  %s  ' % i[j]['station_train_code'])
                                    print('出发站 %s' % i[j]['start_station_name'])
                                    print('到达站 %s' % i[j]['end_station_name'])
                                    print('出发时间 %s' % i[j]['start_time'])
                                    print('到达时间 %s' % i[j]['arrive_time'])
                                    print('历时 %s' % i[j]['lishi'])
                                    print('硬座 %s'%i[j]['yz_num'])
                                    print('软座 %s '%i[j]['rz_num'])
                                    print('硬卧 %s '%i[j]['yw_num'])
                                    print('软卧 %s'%i[j]['rw_num'])


这样就可以得到我们要的数据了,然后进行输出就行。
附上主代码 huoche.py  此程序采用命令行的形式表示并调用,如果读者嫌麻烦的话 可以直接在pycharm中输出,不用使用命令行。

#火车票查询
"""命令行火车票查看器

Usage:
    tickets [-gdtkz] <from> <to> <date>

Options:
    -h,--help   显示帮助菜单
    -g          高铁
    -d          动车
    -t          特快
    -k          快速
    -z          直达

Example:
    tickets 北京 上海 2016-10-10
    tickets -dg 成都 南京 2016-10-10
"""
from docopt import docopt#命令行公式 用命令行运行
from stations import stations #引入搜索字典
import requests
import json
import urllib
from requests.packages.urllib3.exceptions import InsecureRequestWarning
#禁用安全警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

def Hjson(json1,i=0):
    if (isinstance(json1,dict)):#判断传入的是否是json对象,不是json对象就返回异常
        for item in json1:
                # print("ss %s"%json1[item])
                if (isinstance(json1[item],list)):
                    for i in json1[item]:
                        # print("aa %s"%i)
                        if (isinstance(i,dict)):
                            for j in i:
                                if j=='queryLeftNewDTO':
                                    # print("你 才 %s"%i[j])
                                    # return i[j]
                                    print('车次  %s  ' % i[j]['station_train_code'])
                                    print('出发站 %s' % i[j]['start_station_name'])
                                    print('到达站 %s' % i[j]['end_station_name'])
                                    print('出发时间 %s' % i[j]['start_time'])
                                    print('到达时间 %s' % i[j]['arrive_time'])
                                    print('历时 %s' % i[j]['lishi'])
                                    print('硬座 %s'%i[j]['yz_num'])
                                    print('软座 %s '%i[j]['rz_num'])
                                    print('硬卧 %s '%i[j]['yw_num'])
                                    print('软卧 %s'%i[j]['rw_num'])
                                # print("qq%s"%j)

            # 如果item对应的value还是json对象,就调用这个函数进行递归,并且层深i加1,如果不是,直接z在else处进行打印
            # if (isinstance(json1[item],list)):#打印item和其对应的value
            #     for i in json1[item]:
            #         if(isinstance(i,'queryLeftNewDTO')):
            #             for j in i:
            #                 if(isinstance(j,'station_train_code')):
            #                     print("火车编号是 %s"%i[j])
            #     # print("*****"*i+"%s : %s"%(item,json1[item]))
            #     Hjson(json1[item],i=i+1)#调用函数进行递归,i加1
            # else:
            #     # print("*****"*i+"%s  : %s "%(item,json1[item]))#程序入口,对adict进行处理,第二个参数可以不传
            #     print('123')

    else:
        print("json数据错误")

def cli():
    """ 命令行接口  """
    arguments=docopt(__doc__)
    from_station=stations.get(arguments['<from>'])#始发站
    to_station=stations.get(arguments['<to>']) #到达站
    date=arguments['<date>'] #日期
    # print(date,from_station,to_station)
    #https://kyfw.12306.cn/otn/leftTicket/log?leftTicketDTO.train_date=2017-04-18&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT
    #https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date=2017-04-18&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT
    #构建url
    url='https://kyfw.12306.cn/otn/leftTicket/queryX?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(
        date,from_station,to_station
    )
    # print(url)
    # url1 = 'https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate={}&from_station={}&to_station={}'.format(
    #     date, from_station, to_station
    # )
    # 添加verify=False 参数 不验证证书
    # r=requests.get(url,verify=False)
    # print(r.json())
    # r=requests.get(url)
    # print(r.json())
    r = requests.get(url, verify=False)
    Hjson(r.json())

if __name__=='__main__':
    cli()

运行截图:




显示的格式没调,读者可以自己在改变一下输出格式 使之变得的更加好看。










  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值