Python呼叫高德地圖API爬取經緯度
比起普通的靜態網頁爬蟲,爬高德地圖的麻煩之處在於API中存在引數。這需要我們首先要對高德地圖API有個基本的瞭解。
登入高德地圖API網站,點選“開發文件”,找到下圖中的“地理/逆地理編碼API”處,點選進入。
我們可以看到一個API,其問號前面的部分是固定不變的,而問號後面的是引數部分。高德地圖此處羅列了7個引數,包括2個必選引數,以及5個可選引數。這兩個必選引數,一個是高德key,需要註冊;另一個是引數address,比如人民公園。你也許需要的是南京的人民公園的經緯度資訊,湊巧的是,北京也有一個人民公園。引數city的存在可以限定地址資訊的範圍,確保你獲取的是南京的人民公園經緯度。引數output值得關注,預設的輸出結果是json格式。
如果我需要的不是某個建築的經緯度,而是某個行政區域的呢?打個比方,我不想要南京的人民公園的經緯度,我想要的是南京市的經緯度。這樣也是可以實現的,只需要引數address直接填入“南京市”即可,這便不需要引數city了。這樣得出的經緯度,一般是各地行政中心所在的經緯度。
下面,我將爬取南京市的經緯度。
import
requests
import
json
url
=
‘https://restapi。amap。com/v3/geocode/geo’
# 輸入API問號前固定不變的部分
params
=
{
‘key’
:
‘你的高德金鑰’
,
‘address’
:
‘南京市’
}
# 將兩個引數放入字典
res
=
requests
。
get
(
url
,
params
)
res
。
text
輸出結果如下:
輸出結果是json格式,需要用到json模組將其轉化為Python字典。
jd
=
json
。
loads
(
res
。
text
)
# 將json資料轉化為Python字典格式
coords
=
jd
[
‘geocodes’
][
0
][
‘location’
]
coords
輸出結果,獲得南京座標:
為了方便起見,將上面過程整合為函式。
import
requests
import
json
def
coords
(
city
):
url
=
‘https://restapi。amap。com/v3/geocode/geo’
# 輸入API問號前固定不變的部分
params
=
{
‘key’
:
‘你的高德金鑰’
,
‘address’
:
city
}
# 將兩個引數放入字典
res
=
requests
。
get
(
url
,
params
)
jd
=
json
。
loads
(
res
。
text
)
return
jd
[
‘geocodes’
][
0
][
‘location’
]
下面,在自變數位置輸入“南京市”,檢驗下函式正確性。
當大批次處理時,使用for迴圈即可。
下一篇:推薦閱讀-第9期