博客內容介紹
藉助高德地圖API,爬取指定公交線路(國內絕大多數線路,給定城市名和路線名即可)的始發站、終點站、行駛路徑(行車軌跡)、站點名稱和座標、行駛距離等與公交車有關的基本信息,並將其保存到Execl表格中!
說明
考慮到個人最近精力有限,不做知識點詳細介紹!
但可以告訴大家有哪些關鍵點:
1、高德開放平臺|高德地圖API
註冊賬號->獲取Key!
(密鑰Key是url中的一個關鍵參數,具體獲取細節見後文補充部分,但我把自己申請的密鑰直接放到代碼中了,所以不申請問題也行)
2、啥是API?
API(Application Programming Interface,應用程序接口)
有興趣就去了解一下,知不知道與本課題關係不大
3、啥是URL?
URL(Uniform Resource Locator,統一資源定位符)
同樣,有興趣就去了解一下,與本博客關係不是非常大~
4、瞭解requests、json庫簡單應用
同上,還是有興趣就去了解一下,一點也不知道是啥其實也行,問題不大
可直接運行的Python程序
1、接口URL介紹
參數設置和返回參數內容,具體可參考:路徑規劃-API文檔-開發指南(關於具體參數細節問題有待進一步探究)
url = 'https://restapi.amap.com/v3/bus/linename?s=rsv3&extensions=all&key=a5b7479db5b24fd68cedcf24f482c156&output=json&city={}&offset=1&keywords={}&platform=JS'.format(cityname,line)
2、完整代碼
選取內容以青島110路公交舉例,可根據實際需求自己調整
import requests
import json
import pandas as pd
#0、在這裏設置城市和線路名!(應確保有這條線路)
cityname='青島'
line='110路'
url = 'https://restapi.amap.com/v3/bus/linename?s=rsv3&extensions=all&key=a5b7479db5b24fd68cedcf24f482c156&output=json&city={}&offset=1&keywords={}&platform=JS'.format(cityname,line)
#1、獲取數據
r = requests.get(url).text
rt = json.loads(r)
#2、讀取公交線路部分信息(可參考rt變量中的內容,按需獲取)
dt = {}
dt['line_name'] = rt['buslines'][0]['name'] #公交線路名字
dt['start_stop'] = rt['buslines'][0]['start_stop'] #始發站
dt['end_stop'] = rt['buslines'][0]['end_stop'] #終點站
#3、獲取沿途站點站名和對應座標並保存在“公交基本信息”表格中
station_name = []
station_coords = []
for st in rt['buslines'][0]['busstops']:
station_name.append(st['name'])
station_coords.append(st['location'])
dt['station_name'] = station_name
dt['station_coords'] = station_coords
dm = pd.DataFrame(dt)
dm['latitude'], dm['longitude'] = dm['station_coords'].str.split(',', 1).str#將座標拆解爲經度和緯度
dm.to_csv('表格1_{}{}公交基本信息.csv'.format(cityname,line),encoding='utf-8-sig')
#4、獲取沿途路徑座標(行駛軌跡)並保存在“公交路線軌跡表格中”
tmp={}
polyline=rt['buslines'][0]['polyline']
tmp['station_coords']=polyline.split(";")
path=pd.DataFrame(tmp)
path['latitude'], path['longitude'] = path['station_coords'].str.split(',', 1).str#將座標拆解爲經度和緯度
path.to_csv('表格2_{}{}公交路線軌跡.csv'.format(cityname,line),encoding='utf-8-sig')
分析
1、運行結果:
(1)兩個表格:
(2)表格1內容:
①第1遍打開:亂碼?
原因分析:此時讀入表格中參數encoding=‘utf-8’,應修改爲encoding=‘utf-8-sig’
②:改正後內容:
(3)表格2內容:
說明:station_coords爲經緯度,latitude和longitude分別爲拆分後的經緯度,目的是根據方便不同使用場合應用,可根據實際情況調整。
(4)軌跡可視化
將表格1和表格2中座標結合使用,採用高德地圖可視化平臺,繪製軌跡圖
本部分在後續文章中還會涉及,這裏不做詳細介紹
部分繪製細節:
2、關鍵爬取數據變量rt分析
(1)打開Spyder中的Variable explorer(變量探測器)
(2)點擊關鍵變量buslines
這些變量什麼意思?有的可以直接判斷出來,有的可以參照剛推薦的鏈接,就是這個:路徑規劃-API文檔-開發指南,有的或許需要查閱別的文檔了~
補充
1、如何獲取密鑰Key
(1)進入控制檯,在左上角找到“我的應用”
(2)點擊右上角“創建新應用”
(3)填寫創建應用相關信息
(4)選擇添加“Key”
(5)按選擇Web端
(6)申請成功,下圖紅線內容即爲Key