json 插入数据_Python高德地图指定区域经纬度数据抓取

博客介绍从高德地图获取【东莞理工学院】区域边界经纬度坐标点的链接,其返回数据为JSON格式。目标是从该JSON文件中提取区域边缘点的经纬度坐标,并给出了相关代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8aa4a64746f655a95124ab70f967b93a.png

在这里插入图片描述

@Author : Runsen

高德地图【东莞理工学院】

  • 如下链接为从高德地图获取【东莞理工学院】这个区域边界经纬度坐标点的链接

https://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=%E4%B8%9C%E8%8E%9E%E7%90%86%E5%B7%A5%E5%AD%A6%E9%99%A2

  • 可以发现,访问该链接返回的数据是以json格式存储的,如果直接存储返回的网页,那么默认保存格式应该为json
  • 目标是将该json文件中区域边缘点的经纬度坐标提取出来
# 引如requess库import requests# 下载数据data = requests.get(url='http://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=东莞理工学院')data.text# 导入json包import json# 利用json包把上述字符串解析成Python字典js = json.loads(data.text)
46d6ec6c82dc35c9600287db6379bfd2.png

在这里插入图片描述

# 再看嵌套的小字典data的keysjs['data'].keys()dict_keys(['codepoint', 'code', 'suggestion', 'timestamp', 'lqii', 'is_general_search', 'result', 'keywords', 'message', 'total', 'busline_list', 'bus_list', 'general_flag', 'bounds', 'version', 'busline_count', 'magicbox_data', 'interior_count', 'poi_list'])
# 查看输出,我们知道区域边缘坐标点应该是保存在key = 'poi_list'对应的value中的,把它提取出来js['data']['poi_list']

g

0cff4a3aa5c36f97ed1c57c5b4c53d0e.png
3e82b7d7a2bb009aa1a679ac2f3ecd3b.png
89dbb89b852de6f7a67ed0b482eb1936.png
ef582612953ceb17f43e1553aed5683f.png
5795a4bb76c16137b2c781c432670241.png

以下是全代码

# 引如requess库import requests# 下载数据data = requests.get(url='http://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=东莞理工学院')# 导入json包import json# 利用json包把上述字符串解析成Python字典js = json.loads(data.text)# 将结果保存下来,进行下一步解析points1 = js['data']['poi_list'][0]['bound']points2 = js['data']['poi_list'][1]['bound']# 用‘_’来分割这些点,会生成一个列表points= points1.split('_')import pandas as pddf = pd.DataFrame(points,columns=['lat_lng'])# 把经度解析出来df['longitude'] = df['lat_lng'].apply(lambda s:s.split(',')[0])# 把纬度解析出来df['latitude'] = df['lat_lng'].apply(lambda s:s.split(',')[1])# 删掉第一个字段df = df.drop('lat_lng',axis = 1)# 把数据保存到本地df.to_csv('./data/scau.csv',index = False)

现在试下抓取的数据 用的

294dc7f9814a08022065f7c9be869ccb.png
6f84a6e7079290442519a9082a07724f.png
522576ac1b85309ed7c379549c4fa338.png
通过Python编写爬虫程序从高德地图获取数据是一个常见的需求,例如获取地理位置信息、POI(兴趣点)、路径规划等。以下是关于如何利用Python爬取高德地图公开API的数据的基本介绍: ### 使用高德地图开放平台 1. **申请密钥** 高德地图提供了一个开放平台 (https://lbs.amap.com/) ,开发者可以注册账号并创建应用以获得API Key。 2. **选择合适的API接口** - 地理编码服务:用于将地址转换为经纬度坐标。 示例URL: `http://restapi.amap.com/v3/geocode/geo?key=您的Key&address=输入的具体地址` - 周边搜索:查询某一地点周围的特定类型的地点。 示例URL: `https://restapi.amap.com/v3/place/around?location=经度,纬度&key=您的Key&keywords=关键词&type=分类` 3. **请求数据并通过解析JSON返回结果** ```python import requests def get_geocode(address): key = 'your_api_key_here' url = f'http://restapi.amap.com/v3/geocode/geo?key={key}&address={address}' response = requests.get(url) result = response.json() if result['status'] == '1': # 成功状态码检查 location_info = result['geocodes'][0]['location'] print(f"位置 {address} 的地理坐标是:{location_info}") # 调用示例函数 get_geocode('北京市朝阳区望京SOHO') ``` 4. **遵守协议限制** 爬取过程中需要特别注意高德地图API的相关使用规则和频率限制,并避免违规操作导致封禁IP或账户等问题发生。 5. **处理异常情况** 实际项目中应该加入更多的错误捕捉机制如超时重试等功能模块设计。 --- #### 注意事项: - 对于非结构化网页内容抓取,则需借助BeautifulSoup库分析HTML文档提取目标字段;但对于基于AJAX动态加载的内容则需要用到Selenium模拟浏览器渲染过程完成访问采集任务。 - 数据隐私保护及合法性考量非常重要,在实际运用前务必确认是否违反了网站的服务条款以及法律法规的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值