大数据中如何批量获取指定地址的经纬度信息
本篇文章給大家分享的是有關大數據中如何批量獲取指定地址的經緯度信息,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
如何批量查詢地址經緯信息?
抓包
-
打開https://jingweidu.51240.com/
-
F12鍵(mac電腦快捷鍵option+command+I)打開開發者工具Network面板
-
搜索框輸入查詢地址,回車查詢
-
開發者工具Network會看到截圖中的網址
-
點擊Preview,能看到具體信息
1. 經緯度查詢爬蟲函數query
1. 根據抓包分析,構造網址模板template
2. 使用requests庫發起訪問
3. 使用正則表達式re庫解析出經緯度信息
importrequests
defquery(addr):
#查詢addr的經緯度
template='https://apis.map.qq.com/jsapi?qt=geoc&addr={addr}&key=UGMBZ-CINWR-DDRW5-W52AK-D3ENK-ZEBRC&output=jsonp&pf=jsapi&ref=jsapi&cb=qq.maps._svcb2.geocoder0'
url=template.format(addr=addr)
resp=requests.get(url)
x=re.findall('pointx":"(.*?)",',resp.text)[0]
y=re.findall('pointy":"(.*?)",',resp.text)[0]
returnx,y
query(addr="山東省濰坊市安丘市興安街道")
('119.161423','36.331699')
2. 測試數據
importpandasaspd
df=pd.read_csv("test.csv")
df
companyaddr0公司A山東省濰坊市安丘市興安街道1公司B浙江省杭州市蕭山區2公司C廣東省廣州市番禺區3公司D陜西省西安市蓮湖區
df['addr']
0山東省濰坊市安丘市興安街道 1浙江省杭州市蕭山區 2廣東省廣州市番禺區 3陜西省西安市蓮湖區 Name:addr,dtype:object
3. 批量查詢
對選中的addr列,使用apply方法調用query函數批量查詢經緯度
df['經緯度']=df['addr'].apply(query) df
0(119.161423,36.331699) 1(120.264570,30.185340) 2(113.384240,22.937720) 3(108.940200,34.267030) Name:addr,dtype:object
4. 保存
df['經緯度']=df['addr'].apply(query) df
companyaddr經緯度0公司A山東省濰坊市安丘市興安街道(119.161423, 36.331699)1公司B浙江省杭州市蕭山區(120.264570, 30.185340)2公司C廣東省廣州市番禺區(113.384240, 22.937720)3公司D陜西省西安市蓮湖區(108.940200, 34.267030)
5. 導出csv
結果導出到csv中
df.to_csv('result.csv')
總結
以上是生活随笔為你收集整理的大数据中如何批量获取指定地址的经纬度信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle数据库中表被锁,Oracle
- 下一篇: ipadmini5多大