本篇文章给大家分享的是有关大数据中如何批量获取指定地址的经纬度信息,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业岳普湖免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
抓包
打开https://jingweidu.51240.com/
F12键(mac电脑快捷键option+command+I)打开开发者工具Network面板
搜索框输入查询地址,回车查询
开发者工具Network会看到截图中的网址
点击Preview,能看到具体信息
1. 经纬度查询爬虫函数query
1. 根据抓包分析,构造网址模板template
2. 使用requests库发起访问
3. 使用正则表达式re库解析出经纬度信息
import requests def query(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] return x,y query(addr="山东省潍坊市安丘市兴安街道")
('119.161423', '36.331699')
2. 测试数据
import pandas as pd 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')
以上就是大数据中如何批量获取指定地址的经纬度信息,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。