12306是一個(gè)中國(guó)國(guó)家鐵路總公司推出的火車票購(gòu)買平臺(tái)。在使用該平臺(tái)的過(guò)程中,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ù)包含了所有符合查詢要求的車次信息。
下面是一個(gè)簡(jiǎn)單的python實(shí)例,演示了如何通過(guò)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("請(qǐng)求失敗")
在上面的代碼中,requests庫(kù)用于發(fā)起GET請(qǐng)求。為了得到j(luò)son數(shù)據(jù),我們需要調(diào)用response.json()函數(shù)。返回的json數(shù)據(jù)包含了data字段,其中包含了result字段,它是一個(gè)數(shù)組,每個(gè)元素表示一個(gè)車次的信息。我們可以通過(guò)對(duì)數(shù)據(jù)的解析,將車次信息顯示出來(lái)。