如何用Python自動爬取全國30+城市地鐵圖數據?

閱讀本文大概須要 3 分鐘html


最近兩天工做之餘,開始涉獵python,自動爬取了全國30+城市地鐵圖數據,這裏分享下整個爬蟲過程python



1. 數據來源


首先分析全國各個城市地鐵圖的數據來源,無非就是百度或者高德,此次選擇用高德做爲數據來源。打開高德地鐵圖PC端官網 http://map.amap.com/subway/index.html?&1100,點擊每一個城市能夠看到當前城市的地鐵圖,打開瀏覽器F12一下,能夠很容易看到Ajax請求接口後,地鐵圖才繪製出來的。git

分析得知,xhr請求的接口數據即是咱們須要的一部分數據(包含線路名稱、線路名稱座標、線路軌跡、站點名稱、站點定位座標等),另外一部分數據則是直接在Dom節點中(包含站點名稱座標),因此咱們要爬取的數據即是Ajax接口數據 + Dom節點數據,如圖所示:github




2. 爬蟲過程


瞭解清楚數據來源後,就開始進行python準備工做,記住萬能公式 : 程序 = 『數據結構』 +『 算法』算法


你要作的準備工做即是本次學習後收穫的知識點:chrome


2.1  用到哪些python庫:


接口請求:採用requests庫;json

dom解析:採用lxml庫;瀏覽器

瀏覽器自動化操做:採用selenium以及chrome瀏覽器驅動;數據結構

json操做:採用json庫dom


2.2  用到哪些python數據結構:


list: 存儲線路列表

dict:存儲線路和站點信息

string: 存儲各字段信息


這裏再也不講述各個依賴庫的安裝,有針對性學習python相關知識點,就能夠愉快地編碼了,運行寫好的爬蟲腳本,不用任何手動操做,就可獲得30+城市的json格式地鐵圖數據文件了



3. 源碼


https://github.com/caijinlin/python-spider (內附抓取視頻)


4. 總結


編碼的過程當中,遇到這樣一個問題,有些城市的菜單在頁面的『更多』裏面,加載完頁面後是隱藏的,python打開瀏覽器模擬點擊的時候,會報一個找不到該元素的錯誤,通過google一番,總結了兩個解決方案,親測可用


https://github.com/caijinlin/dev-solutions/issues/14



學習不該該停留理論,動手實踐並輸出,方可檢驗你的學習成果,一塊兒操練起來吧


相關文章
相關標籤/搜索