百度API
获取AK
首先我们打开百度API开放平台,注册/登陆自己的账号,成为百度开发者,在「应用管理」— 「我的应用」中创建应用,如下所示:
在「创建应用」中输入「应用名称」,并且「请求校验方式」选择「IP白名单交验」,这里我们不使用「sn校验方式」,因为需要计算sn,并且为了方便,IP白名单选择了“0.0.0.0/0”,不对IP进行限制(这里是为了Debug,如果想要上线,请设置合理的IP白名单),然后提交即可。
「访问应用(AK)」是我们所需的。
获取地址对应的经纬度----地理编码
查看百度开放平台中的「开发文档」—「Web服务API」,选择「地点输入提示」—「地理编码」,我们可以找到地理编码接口的url:
http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&city=北京市&output=json&ak=您的ak&callback=showLocation //GET请求
其中:
- address:所查询的地名;
- city:查询地区的城市,「可以省略」,主要是为了限定地区排除部分城市地区重名问题;
- json:输出格式为json格式,方便后期获取地址;
- ak:即上面我们获取的API Key;
完整的请求参数如下:
参数名 | 参数含义 | 类型 | 举例 | 默认值 | 是否必须 |
---|---|---|---|---|---|
address | 待解析的地址。最多支持84个字节。 可以输入两种样式的值,分别是: 1、标准的结构化地址信息,如北京市海淀区上地十街十号 【推荐,地址结构越完整,解析精度越高】 2、支持“路与路交叉口”描述方式,如北一环路和阜阳路的交叉路口 第二种方式并不总是有返回结果,只有当地址库中存在该地址描述时才有返回。 |
string | 北京市海淀区上地十街10号 | 无 | 是 |
city | 地址所在的城市名。用于指定上述地址所在的城市,当多个城市都有上述地址时,该参数起到过滤作用,但不限制坐标召回城市。 | string | 北京市 | 无 | 否 |
ret_coordtype | 可选参数,添加后返回国测局经纬度坐标或百度米制坐标 坐标系说明 | string | gcj02ll(国测局坐标)、bd09mc(百度墨卡托坐标) | bd09ll(百度经纬度坐标) | 否 |
ak | 用户申请注册的key,自v2开始参数修改为“ak”,之前版本参数为“key”申请ak | string | 无 | 是 | |
sn | 若用户所用ak的校验方式为sn校验时该参数必须 sn生成 | string | 无 | 否 | |
output | 输出格式为json或者xml | string | json或xml | xml | 否 |
callback | 将json格式的返回值通过callback函数返回以实现jsonp功能 | string | 无 | 否 |
主要的返回结果参数为:
名称 | 含义 | 类型 |
---|---|---|
status | 返回结果状态值, 成功返回0,其他值请查看下方返回码状态表。 | int |
location | 经纬度坐标(包含lng和lat) | object |
precise | 位置的附加信息,是否精确查找。1为精确查找,即准确打点;0为不精确,即模糊打点。 | int |
level | 能精确理解的地址类型,包含:UNKNOWN、国家、省、城市、区县、乡镇、村庄、道路、地产小区、商务大厦、政府机构、交叉路口、商圈、生活服务、休闲娱乐、餐饮、宾馆、购物、金融、教育、医疗 、工业园区 、旅游景点 、汽车服务、火车站、长途汽车站、桥 、停车场/停车区、港口/码头、收费区/收费站、飞机场 、机场 、收费处/收费站 、加油站、绿地、门址 | string |
接下来我们使用「request包」爬取对应的json内容:
def BaiduQuery(address