1. 程式人生 > 其它 >爬蟲與Python:(四)爬蟲進階一之資料抓取——2.Python模擬Ajax

爬蟲與Python:(四)爬蟲進階一之資料抓取——2.Python模擬Ajax

如何用用Python模擬Ajax請求,我們仍然以飛常準大資料為例(https://data.variflight.com/analytics/CodeQuery),通過查詢北京機場的三個字母碼“PEK”來請求獲取它的資料,把北京機場的資訊提取出來。

分析請求和響應結果

詳細的Chrome開發者工具使用方法以及“airportCode”的響應請求獲取方法不在贅述了。這裡直接上分析結果:

  • 請求連結:https://data.variflight.com/analytics/Codeapi/airportCode
  • 請求方法:POST
  • 請求資料:{key:"PEK" , page : 0} 。key就是輸入“PEK”要查詢的三字碼,page是頁碼。

分析了請求結果,接下來我們分析響應結果如圖1所示:

圖1

  • code:代表響應狀態碼是失敗還是成功。
  • data: 我們想要的內容,裡面包含了北京機場的相關資訊。
  • message: 提示資訊。

編寫程式碼

下面使用Python的requests庫編碼程式碼來模擬資料。首先定義一個方法來獲取每次請求的結果。在請求時,key和page是一個可變引數,所以將它們作為方法的引數傳遞進來,相關示例程式碼如下:

 1 # 模擬抓取飛常準大資料的機場資訊
 2 import json
 3 import requests
 4 
 5 '''
 6 獲取請求資料
 7 @:param key 查詢關鍵字
8 @:param page 頁碼(預設為0) 9 ''' 10 def get_data(key,page = 0): 11 url = "https://data.variflight.com/analytics/Codeapi/airportCode" 12 data = { 13 "key":key, 14 "page" :page 15 } 16 res = requests.request("post",url , data=data) 17 return res.text 18 19 ''' 20 獲取解析結果 21 @:param data
22 ''' 23 def get_parse(data): 24 return json.loads(data) 25 26 data = get_data("PEK" , 0) 27 apt_info = get_parse(data) 28 print(apt_info,apt_info["data"])

執行結果如下:

另外,如何將儲存的資料儲存到資料庫或Excel中?將會在後面講到。

有志者,事竟成,破釜沉舟,百二秦關終屬楚; 苦心人,天不負,臥薪嚐膽,三千越甲可吞吳。