大區域百度POI爬取

任務背景

需要爬取川、渝、滇、黔、藏五省(直轄市)的加油站POI數據。百度地圖開放平臺的地點檢索API提供了這樣的功能。但API每次最多返回400條數據,且每日有配額的限量(普通用戶2萬次/天,認證開發者3萬次/天)。如果範圍過大,將不易進行數據的爬取。
在這裏插入圖片描述

準備

  1. 在ArcGIS中查看五地的經緯度範圍(右鍵圖層–>屬性–>源),這是在WGS84下的經緯度座標,記下來。
    在這裏插入圖片描述
  2. 在爬取時選擇的是在python中使用API,可能電腦不一定有python的環境或者所需要的包,因此可以使用百度自家百度大腦AI Studio的在線免費Notebook環境。
  • 首先進入百度大腦https://aistudio.baidu.com/aistudio/index到AI Studio中,註冊登陸,進入個人中心,選擇項目。
    在這裏插入圖片描述

  • 找到項目(已經寫好了)——百度POI爬取
    在這裏插入圖片描述

  • fork項目,這樣在自己的項目中就有了這個公開項目。
    在這裏插入圖片描述

  • 到自己的項目中,運行這個項目,選擇基礎版免費版即可。
    在這裏插入圖片描述

  1. 然後需要用到百度的API進行爬取,所以需要一個百度地圖API的AK。
  • 進入百度地圖開放平臺http://lbsyun.baidu.com/,登錄。點擊控制檯–>應用管理–>我的應用,選擇創建應用。
    在這裏插入圖片描述
  • 選擇瀏覽器端,白名單打上*號,名字自己取一個。
    在這裏插入圖片描述
  • 這樣在應用界面就能看到了,鼠標指向AK的代碼點擊出現的複製按鈕即可複製。
    在這裏插入圖片描述

開始爬取

  1. 進入AI Studio中剛剛進入的百度POI爬取項目的Notebook,在最上面有個參數配置,只用修改這裏,在下方的Cell中就是一些配置,其他參數如下:
  • AK就是把自己在百度地圖開放平臺弄到的AK複製到baidu_web_ak中
  • 範圍就按照之前記錄的ArcGIS中區域的範圍填入下方範圍中
  • 滑動窗口大小可以根據情況修改,意思就是以多大經緯的框進行滑動,每個框分別提取數據(不宜過大,因此每次最多400條數據,越小就越不容易漏掉數據,默認5度【後續測試發現5太大了,改成0.5吧】)
  • 索引號表示從第幾個框開始(因爲每日有限額,如果數據很多,一天爬不完,就可以記錄下今天爬到了那一個區域,第二天修改索引號爲區域號,繼續開始爬取)
  • 興趣區關鍵字是表示要爬取的興趣區包含哪些關鍵字
  • 保存目錄是結果txt和log保存的目錄
    在這裏插入圖片描述
  1. 完畢之後,重啓並運行全部代碼。
    在這裏插入圖片描述
  2. 接下來就能在最後看到中間結果的輸出。
    在這裏插入圖片描述
  3. 等待爬取完成後,顯示空閒,在文件夾中進入output文件夾(自己設置的文件夾),就可以看到txt了。鼠標指向txt,選擇彈出框的第二個下載按鈕,下載這個txt到本地電腦上。
    在這裏插入圖片描述
  4. OK了,打開下載下來的txt看看。有1000多條數據。
    在這裏插入圖片描述

最終處理

  1. 將txt用記事本打開另存爲ANSI編碼,將txt後綴改爲csv。
  2. 用Excel打開此csv,使用數據分列,按‘,’分開,保存爲xls(我的打開就是分好了的,可能高版本的Excel會自動處理,這個不清楚)。
  3. 表頭添加一行,打上列標題:名稱,緯度,經度,地區,詳細地址。
  4. 打開ArcGIS,使用添加XY數據,將此xls導入,選擇對應的經緯度(好像5x5的塊太大了,翻車車,改成0.5重新跑了一下,有13000左右的數據),再導出爲shp數據。
  5. 最後將數據加載到ArcGIS中,使用五地區域進行一個裁剪(分析工具–>提取分析–>裁剪),就得到了在五地的加油站數據。給個最終結果圖(裁剪前後)如下。
    在這裏插入圖片描述
    在這裏插入圖片描述
    這就是五地密密麻麻的加油站了