乾貨 | 10分鐘教你用Python獲取百度地圖各點的經緯度資訊(上篇)
- 2020 年 2 月 19 日
- 筆記
Python確實是個好東西,可以用來解決很多數據上的煩惱。結合現在各個平台提供的API,可以用Python做很多有用的需求哦~

需求分析
之前寫論文的時候,就有這個需求了。就是抓取百度地圖上某些特定的點的資訊,生成測試算例去做演算法後期的實驗。比如下面地圖:

現在需要爬取地圖上搜索出來的「超市」這些點的相關資訊,主要包括經緯度、地點名稱啊等等。
首先,最笨的辦法當然是先去百度地圖坐標拾取系統查,然後在一個一個複製黏貼到文檔上:

這種辦法費時費力,不符合我們的社會主義核心價值觀,而且好像一次只能好到150個點(不知道怎樣才能獲取更多點,知道的小夥伴可以告知一下),但我們需求的點肯定不止這麼少的:

所以,得想想辦法,能不能用一些自動化腳本,自動爬取數據保存成所需要的格式呢?
百度地圖POI
然後百度了一下,偶然了解到了百度地圖POI數據這個東西。
什麼是POI呢?POI是一切可以抽象為空間點的現實世界的實體,比如餐館、酒店、商城等,POI數據具有空間坐標和各種屬性,是各種地圖查詢軟體的基礎數據之一。
百度地圖作為中國頂尖的地圖服務提供商,含有豐富的POI數據,那要如何快速獲取百度地圖POI興趣點數據呢?——當然要通過Python+爬蟲來完成此任務啦~~
POI數據獲取的關鍵在於構造出合適的url,訪問該url便能請求到相應的POI數據。
前期準備
在開始之前,我們需要做一些準備工作,申請一個帳號和密鑰,才能調用百度地圖的API進而獲取所需的數據。
首先要登陸百度地圖開放平台http://lbsyun.baidu.com/,完成註冊。這個平台是百度地圖為開發者提供介面用的,有很多其他的功能,這裡只講POI爬取相關。

註冊登錄後,在右上角進入控制台:

然後找到左邊應用管理下的我的應用,創建一個應用:

然後,輸入應用名稱,應用類型選擇服務端,把地點檢索給勾選上。參考文檔可以看具體的API調用方法。

值得注意的是,IP白名單的設置,如果想任意IP調用就寫上0.0.0.0/0,避免麻煩我們選擇這個。
創建完成後我們會得到這樣一個應用的AK,就是訪問密鑰:

在開發文檔里找到Web服務API:

選擇地點檢索V2.0的服務文檔,我們會看到使用說明:

其實就是通過一個編輯好的URL,請求數據,然後伺服器返回相應的資訊。比如使用行政區劃區域檢索武漢市內的超市資訊,則可以編輯:
http://api.map.baidu.com/place/v2/search?query=超市®ion=武漢&output=json&ak=剛剛創建的應用AK
輸入瀏覽器後回車即可得到想要的資訊:

怎樣,是不是非常簡單呢!今天先介紹到這裡,後續我們還會介紹幾種地點檢索方式以及注意的事項等。
也會介紹如何根據獲取的經緯度資訊爬取各點之間的真實距離以及行車時間等資訊。大家可以小小期待一下哦~
最後的最後,祝大家在新的一年學有所成
也祝小編好運多多,心想事成,嘿嘿!
---The End---
文案 && 編輯:鄧發珩
審稿人:秦時明岳(華中科技大學管理學院)

