1. 程式人生 > >python利用selenium+requests+beautifulsoup爬取12306火車票資訊

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解析資料  獲取要的值然後進行  儲存   

以下是完整程式碼截圖   僅供參考