天天看點

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

Python确實是個好東西,可以用來解決很多資料上的煩惱。結合現在各個平台提供的API,可以用Python做很多有用的需求哦~

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

需求分析

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

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

現在需要爬取地圖上搜尋出來的“超市”這些點的相關資訊,主要包括經緯度、地點名稱啊等等。

首先,最笨的辦法當然是先去百度地圖坐标拾取系統查,然後在一個一個複制黏貼到文檔上:

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

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

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

是以,得想想辦法,能不能用一些自動化腳本,自動爬取資料儲存成所需要的格式呢?

百度地圖POI

然後百度了一下,偶然了解到了百度地圖POI資料這個東西。

什麼是POI呢?POI是一切可以抽象為空間點的現實世界的實體,比如餐館、酒店、商城等,POI資料具有空間坐标和各種屬性,是各種地圖查詢軟體的基礎資料之一。

百度地圖作為國内頂尖的地圖服務提供商,含有豐富的POI資料,那要如何快速擷取百度地圖POI興趣點資料呢?——當然要通過Python+爬蟲來完成此任務啦~~

POI資料擷取的關鍵在于構造出合适的url,通路該url便能請求到相應的POI資料。

前期準備

在開始之前,我們需要做一些準備工作,申請一個賬号和密鑰,才能調用百度地圖的API進而擷取所需的資料。

首先要登陸百度地圖開放平台http://lbsyun.baidu.com/,完成注冊。這個平台是百度地圖為開發者提供接口用的,有很多其他的功能,這裡隻講POI爬取相關。

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

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

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

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

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

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

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

值得注意的是,IP白名單的設定,如果想任意IP調用就寫上0.0.0.0/0,避免麻煩我們選擇這個。

建立完成後我們會得到這樣一個應用的AK,就是通路密鑰:

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

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

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

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

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

其實就是通過一個編輯好的URL,請求資料,然後伺服器傳回相應的資訊。比如使用行政區劃區域檢索武漢市内的超市資訊,則可以編輯:

http://api.map.baidu.com/place/v2/search?query=超市&region=武漢&output=json&ak=剛剛建立的應用AK

輸入浏覽器後回車即可得到想要的資訊:

幹貨 | 10分鐘教你用Python擷取百度地圖各點的經緯度資訊

怎樣,是不是非常簡單呢!今天先介紹到這裡,後續我們還會介紹幾種地點檢索方式以及注意的事項等。

也會介紹如何根據擷取的經緯度資訊爬取各點之間的真實距離以及行車時間等資訊。大家可以小小期待一下哦~