12306是一個中國國家鐵路總公司推出的火車票購買平臺。在使用該平臺的過程中,json解析顯得尤為重要。下面將介紹12306的json解析。
在12306網(wǎng)站上,json數(shù)據(jù)一般用于車次查詢。查詢的接口為:
https://kyfw.12306.cn/otn/leftTicket/queryZ? leftTicketDTO.train_date={train_date}& leftTicketDTO.from_station={from_station}& leftTicketDTO.to_station={to_station}& purpose_codes=ADULT
其中train_date是發(fā)車日期,from_station是起點(diǎn)站代碼,to_station是終點(diǎn)站代碼。接口返回的json數(shù)據(jù)包含了所有符合查詢要求的車次信息。
下面是一個簡單的python實例,演示了如何通過12306的json解析,獲取符合查詢要求的所有車次信息。
import requests url = "https://kyfw.12306.cn/otn/leftTicket/queryZ" params = { "leftTicketDTO.train_date": "2021-07-01", "leftTicketDTO.from_station": "BJP", "leftTicketDTO.to_station": "SHH", "purpose_codes": "ADULT" } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" } response = requests.get(url=url, params=params, headers=headers) if response.status_code == 200: data = response.json()["data"] for d in data["result"]: print(d) else: print("請求失敗")
在上面的代碼中,requests庫用于發(fā)起GET請求。為了得到j(luò)son數(shù)據(jù),我們需要調(diào)用response.json()函數(shù)。返回的json數(shù)據(jù)包含了data字段,其中包含了result字段,它是一個數(shù)組,每個元素表示一個車次的信息。我們可以通過對數(shù)據(jù)的解析,將車次信息顯示出來。