2019-12-7 爬网页8-调用百度地图api应用

在爬二手房网站时候,有个需求,要获得房子的经纬度,以及周围的公共设施。
这个可以通过调用百度api应用接口来实现。

申请密钥(AK)

百度地图API是为开发者提供http/https接口,即开发者通过http/https形式发起检索请求,获取返回json或xml格式的检索数据。
根据百度的介绍,它的地图api接口可以提供以下功能

  • 定位
  • 轨迹
  • 路线规划
  • 路况
  • 地图
  • 导航
  • 搜索

要想调用接口,那就要注册并获得密钥ak

打开以下页面

http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5

开发文档中选“web服务api”,然后注册
在这里插入图片描述注册要填写的内容很简单,名称,手机号,验证码,邮箱。
然后进入邮箱激活就行。

最后就是创建应用,只有创建完应用才能获得密钥。
应用类型有以下几种
在这里插入图片描述申请服务器端应用,获得服务器ak,但是“服务端AK”不支持浏览器端使用。这里可以设定ip过滤列表,只有IP白名单内的服务器才能成功发起调用,如果不想对IP做任何限制,请设置为0.0.0.0/0。

如果要通过浏览器访问,那请选择“浏览器端AK”。同样,它也有白名单列表Referer。如果不想做任何限制,那就用*表示。

创建完成后,进入“我的应用”,就能看到密钥ak了。
在这里插入图片描述利用这个ak,我们就可以实现条用百度地图api了。参考参见,http://lbsyun.baidu.com/index.php?title=webapi

还有一点要说明,到目前为止的用户是“未认证用户”。
如果要认证,在http://lbsyun.baidu.com/apiconsole/auth/#/home
在这里插入图片描述未认证用户和认证用户的区别如下
http://lbsyun.baidu.com/apiconsole/quota#/privilege
在这里插入图片描述只有截了一部分图,主要就是调用次数上的区别。自己开发测试用,未认证就够了。

关于开发者认证,参见http://lbsyun.baidu.com/index.php?title=FAQ/authentication

下面我们就可以来实现百度地图api的调用了。

利用密钥调用百度地图api

1.获得指定地点的经纬度

这个比较简单,调用方式如下

url = "http://api.map.baidu.com/geocoder?address=" + address + "&output=json&ak=你的ak"

address就是你指定的地点,返回的是json格式
返回的数据如下

{u'status': u'OK', u'result': {u'precise': 1, u'confidence': 80, u'location': {u'lat': 31.285264, u'lng': 121.533343}, u'level': u'\u95e8\u5740'}}

其中lat是维度,lng是经度

2.获得指定地点周围的poi(Point of Interest,兴趣点,比如公共设施)

这个可以参考百度api的《开发文档》。
我用的是圆形区域检索,接口调用方式如下

http://api.map.baidu.com/place/v2/search?query=银行&location=39.915,116.404&radius=2000&output=xml&ak=您的密钥 //GET请求

参数说明:

  • query,关键字,你要搜索的poi。银行,酒店,医院之类。2个同时搜索使用$分割,例如:银行$地铁。最多支持10个关键字。
  • location,圆形区域的中心点,lat<纬度>,lng<经度>
  • radius,搜索半径,单位:米
  • output,输出格式,json或者xml

还有些参数也挺有用的

  • page_size ,单次召回POI数量,默认为10条记录,最大返回20条。
  • page_num,分页页码,默认为0,0代表第一页,1代表第二页,以此类推。常与page_size搭配使用。
  • scope ,检索结果详细程度。取值为1 或空,则返回基本信息;取值为2,返回检索POI详细信息。如果要获得poi到中心点的距离,要使用这个参数。

应用举例
可以尝试在浏览器中输入以下地址

http://api.map.baidu.com/place/v2/search?query='地铁'&page_size=20&location=31.285264,121.533343&radius=1000&output=json&ak=你的ak&scope=2

获得的界面如下
在这里插入图片描述

怎么在程序中调用就不再介绍了,实在不会就参考《代码》。

发布了122 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_42555985/article/details/103439740