国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python爬蟲_城市公交、地鐵站點和線路數據采集實例

2020-02-16 11:33:15
字體:
來源:轉載
供稿:網友

城市公交、地鐵數據反映了城市的公共交通,研究該數據可以挖掘城市的交通結構、路網規劃、公交選址等。但是,這類數據往往掌握在特定部門中,很難獲取?;ヂ摼W地圖上有大量的信息,包含公交、地鐵等數據,解析其數據反饋方式,可以通過Python爬蟲采集。閑言少敘,接下來將詳細介紹如何使用Python爬蟲爬取城市公交、地鐵站點和數據。

首先,爬取研究城市的所有公交和地鐵線路名稱,即XX路,地鐵X號線??梢酝ㄟ^圖吧公交、公交網、8684、本地寶等網站獲取,該類網站提供了按數字和字母劃分類別的公交線路名稱。Python寫個簡單的爬蟲就能采集,可參看WenWu_Both的文章,博主詳細介紹了如何利用python爬取8684上某城市所有的公交站點數據。該博主采集了站點詳細的信息,包括,但是缺少了公交站點的坐標、公交線路坐標數據。這就讓人抓狂了,沒有空間坐標怎么落圖,怎么分析,所以,本文重點介紹的是站點坐標、線路的獲取。

以圖吧公交為例,點擊某一公交后,出現該路公交的詳細站點信息和地圖信息。博主頓感興奮,覺得馬上就要成功了,各種抓包,發現并不能解析。可能博主技術所限,如有大神能從中抓到站點和線路的坐標信息,請不寧賜教。這TM就讓人絕望了啊,到嘴的肥肉吃不了。

天無絕人之路,嘗試找找某地圖的API,發現可以調用,通過解析,能夠找到該數據的后臺地址。熟悉前端的可以試試,博主前端也就只會個hello world,不獻丑了。這是一種思路,實踐證明是可以的。

地圖API可以,那么通過地圖抓包呢?打開某圖主頁,直接輸入某市公交名稱,通過抓包,成功找到站點和線路信息。具體抓包信息如下圖所示,busline_list中詳細列出了站點和線路的信息,其中有兩條,是同一趟公交不同方向的數據,略有差別,需注意。找到入口過后,接下來爬蟲就要大顯身手了。

主要爬取代碼如下,其實也很簡單,主函數如下。首先需要構建傳入的參數,主要的包括路線名稱,城市編碼,地理范圍,縮放尺度。地理范圍可以通過坐標拾取器獲取,參數經url編碼后,發送請求,判斷返回數據是否符合要求(注:可能該線路地圖上停運或不存在,也可能是訪問速度過快,反爬蟲機制需要人工驗證,博主爬取的時候碰到過,所以后面設置了隨機休眠)。接下來,就是解析json數據了。代碼中的extratStations和extractLine,就是提取需要的字段,怎么樣,是不是很簡單。最后,就是保存了,站點和路線分別存儲。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 越西县| 淮安市| 博爱县| 周口市| 麻城市| 精河县| 海晏县| 开平市| 富源县| 邓州市| 三江| 巩义市| 怀柔区| 阳新县| 牙克石市| 淮南市| 邢台市| 汨罗市| 马边| 商都县| 张家口市| 泉州市| 遂昌县| 久治县| 雷山县| 莱州市| 昭苏县| 青川县| 安泽县| 云梦县| 兴仁县| 敖汉旗| 紫金县| 革吉县| 麟游县| 全南县| 沙河市| 临猗县| 竹溪县| 临沂市| 冕宁县|