高德地图指定区域经纬度数据抓取

在这里插入图片描述

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

https://ditu.amap.com/service/poiInfo?query_type=TQUERY&keywords=东莞理工学院

  • 可以发现,访问该链接返回的数据是以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)

在这里插入图片描述

# 再看嵌套的小字典data的keys
js['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']

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以下是全代码

# 引如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 pd
df = 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)

现在试下抓取的数据
用的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44510615/article/details/89461327