python利用selenium+requests+beautifulsoup爬取12306火車票資訊
在高速發展的時代。乘車出遠門是必不可少的,有些查詢資訊是要收費的。這裡打造免費獲取火車票資訊
想要爬取12306火車票資訊,訪問12306官方網站,輸入出發地,目的地 ,時間 之後點選確定,這是我們開啟谷歌瀏覽器開發者模式找到 https://kyfw.12306.cn/otn/resources/js/framework/station_name.js 這裡包含了所有城市的資訊和所有城市的縮寫字母。想要獲取火車票資訊 https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2019-01-19&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT ,這是北京到上海 瀏覽器確定之後所抓的包 從中可以 看出 BJP =北京 而 SHH=上海 . 下圖為 所有城市代號
現在把上面的js 資料轉變為json資料 {“北京”:BJP ,"上海":SSH}
根據字元竄的 split ()方法 按照“=”進行拆分 取出等號後面的資料 “字元竄”.split("=")[1] 這樣就獲取到 等號後面的資料 如下圖:
獲得資料之後然後在根據 "|" 進行拆分 並去除 “@”得到如下
根據相鄰倆個組成json資料,遍歷陣列 分為倆個數組 一個為 實體 一個為簡寫 然後再根據python強大的 函式 dict(zip(陣列1,陣列2)) 將其變為 json鍵值對之後將資料
https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2019-01-19&leftTicketDTO.from_station=BJP&leftTicketDTO.to_station=SHH&purpose_codes=ADULT 抓包獲得是網址 之後利用selenium 進行定位 beautifulsoup解析資料 獲取要的值然後進行 儲存
以下是完整程式碼截圖 僅供參考