如何使用網路爬蟲抓取海量地址的 GPS 地理信息?

比如抓取某一個城市裡常見地名的經緯度信息,某某某小區、某某某飯店、某某某路10號等。

我能想到的幾個問題:
1.哪些網站可能包含大量這類經緯度信息?百度地圖?谷歌地圖?lbs/sns網站?團購類網站?

2.gps地址可能需要進行轉換處理,據說很多網站gps是加密轉換過的,比如百度地圖。

3.適合的爬蟲框架推薦?

4.反反爬蟲機制?

問題很大很多,不知道有沒有人願意分享一點經驗。


1. 調用百度的API即可。基於你說的情況,應該需要的Place API及Geocoding API,個人開發者經過認證之後前者每天有10萬次的請求次數,後者有100萬次的請求次數,足夠你調用了。文檔在這裡:http://lbsyun.baidu.com/index.php?title=webapi
2. 由於某些原因,在國內大部分的應用使用的火星坐標或者百度坐標,有轉換方法。具體的坐標類型對應具體的SDK,顯示上沒有影響,但是確實不是準確的gps坐標。
3. 要啥自行車……現成API給你調用的話Python的urllib庫就行了。
4. 調用API不需要反反爬蟲機制。

至於為什麼要用百度地圖,雖然大家都是百度地圖SDK受害者,然並卵。


1.哪些網站可能包含大量這類經緯度信息?百度地圖?谷歌地圖?lbs/sns網站?團購類網站?
地圖類: 百度地圖,谷歌地圖,搜狗,高德,搜搜,天地圖
O2O: 美團,點評,糯米
房地產: 搜房網,鏈家
地址解析提供商: GeoHey
等,只要你用心都能找到

2.gps地址可能需要進行轉換處理,據說很多網站gps是加密轉換過的,比如百度地圖。
這不重要不是嗎? 畢竟你都問到這一步了我想你不是程序員,也該有一個程序員
百度的經緯度轉換非常簡單,比較麻煩的是 搜狗的經緯度,用最笨的 格子方法也能破解

3.適合的爬蟲框架推薦?
最簡單的最合適自己的能滿足你自己的需求
因為大多數地圖廠商提供的API,所以你需要做的比較少,前期
後期你不滿足 地圖廠商的數據的時候,需要爬去其他網站的數據,
大多數 爬蟲框架的 機制大同小異 ,你可以搜一下scrapy,了解下,就可以動手做了
畢竟你問的這麼初級的問題,高大上的爬蟲機制,無非是 高可用,高可靠,高性能,
這些"高" 的前提是你有一個能跑的通的

4.反反爬蟲機制?
你需要代理IP ,並且維護好一個 代理IP池,對於有爬蟲限制的網站,你需要溫柔點,摸清楚他的脾氣,
當然能付費最好,如果不能,買IP,買IP ,儘可能的讓自己是個真實用戶


@周煦辰已經提到了可行方法。補充一點:
1、POI的數據量大約是2000萬,可以申請多個AK分別來跑;
2、你是拿不到原始GPS坐標的,如果通過非官方的途徑做了數據糾偏,那麼只能私下自己用,如果通過各種途徑傳播,小心國安局請你喝茶;
3、天地圖發布的數據是GPS坐標,不過是導航數據,精度不高,可以直接用JS抓取使用。


完全外行。路過扯一句。如果想知道國內所有石獅子的GPS位置的話,可以考慮ingress


國內的不清楚,美國有個網站叫foursquare(https://foursquare.com/),提供的API很全面,你可以在一個城市內均勻選取若干個點,然後用range query獲得範圍內的venues。 之前用來獲取洛杉磯所有商家的信息,包括公園等地標。坐標存在不準確的問題,但是對於提供詳細地址的venue可以用一些Geocoder的API重新確定坐標,如http://geocoding.geo.census.gov/。


推薦閱讀:

gis如何在實際的設計規劃項目中進行應用 gis在設計中起到了什麼作用?
如何解讀 2017 年10 月 3 日公布的馬航 MH370 搜索報告?
遙感圖像處理和普通圖像處理有哪些異同呢,本質區別是什麼?
為什麼巴拿馬運河東西兩側(大西洋和太平洋)海平面高度相差很大?求一個比較說得過去的解釋!?

TAG:GIS地理信息系統 | 百度地圖 | 爬蟲計算機網路 | 搜索引擎 | 網頁爬蟲 |