认识高德地图API
打开“高德开放平台”,点击“开发文档”,在“Web服务”下寻找并点击“搜索API”。
我们使用“搜索API”,为的是爬取POI。所谓POI,即“Point of Interest”,中文名叫“兴趣点”。POI分为各种类型,比如学校、商场、快递点等等。这里我们以【洗浴推拿场所】为例。主要参数有三个:
- key:高德密钥,这是高德给使用其API服务的人士的授权认证
- types:POI类型,不同类型有不同的编码,如洗浴推拿场所是 071400
- city:城市编码,也就是身份证号码前6位,如启东市的编码是 320681
爬取数据
下面以江苏省启东市为例,看看如何爬取单个县级单位的POI数据。
import requests # 导入各模块
import json
import pandas as pd
from pandas import Series, DataFrame
'''
更多Python学习资料以及源码教程资料,可以在群821460695 免费获取
'''
url = 'https://restapi.amap.com/v3/place/text' # 搜索API
params = {'key':'你的高德密钥',
'types':'071400', # 洗浴推拿场所
'city':'320681'} # 身份证前6位,以启东市为例
res = requests.get(url,params)
jd = json.loads(res.text) # 将JSON格式转化为Python字典格式
df1 = DataFrame(jd['pois']) # 根据键取值,并放入数据框
df2 = df1[['address','adname','name','tel']] # 只显示重要的几列
df2.head() # 篇幅有限,只显示前5行
整合为函数
将上面爬取单个城市的过程整合为函数,这样只需要在自变量的位置放置城市编码即可获得当地的洗浴推拿场所数据。
def bath(city):
url = 'https://restapi.amap.com/v3/place/text'
params = {'key':'你的高德密钥',
'types':'071400', # 洗浴推拿场所
'city': city} # 自变量,城市编码
res = requests.get(url,params)
jd = json.loads(res.text) # 将JSON格式转化为Python字典格式
df = DataFrame(jd['pois']) # 根据键取值,并放入数据框
return df[['address','adname','name','tel']] # 只显示重要的列
以河北省保定市徐水区为例,将其城市编码作为自变量代入函数。
bath('130609').head() # 以徐水区为例,只显示前5条记录
现在,知道去哪洗澡了么?