前言
Python确实是个好东西,可以用来解决很多数据上的烦恼。结合现在各个平台提供的API,可以用Python做很多有用的需求哦~
需求分析
之前写论文的时候,就有这个需求了。就是抓取百度地图上某些特定的点的信息,生成测试算例去做算法后期的实验。比如下面地图:
现在需要爬取地图上搜索出来的“超市”这些点的相关信息,主要包括经纬度、地点名称啊等等。
首先,最笨的办法当然是先去百度地图坐标拾取系统查,然后在一个一个复制黏贴到文档上:
这种办法费时费力,不符合我们的社会主义核心价值观,而且好像一次只能好到150个点(不知道怎样才能获取更多点,知道的小伙伴可以告知一下),但我们需求的点肯定不止这么少的:
所以,得想想办法,能不能用一些自动化脚本,自动爬取数据保存成所需要的格式呢?
百度地图POI
然后百度了一下,偶然了解到了百度地图POI数据这个东西。
什么是POI呢?POI是一切可以抽象为空间点的现实世界的实体,比如餐馆、酒店、商城等,POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一。
百度地图作为国内顶尖的地图服务提供商,含有丰富的POI数据,那要如何快速获取百度地图POI兴趣点数据呢?——当然要通过Python+爬虫来完成此任务啦~~
POI数据获取的关键在于构造出合适的url,访问该url便能请求到相应的POI数据。
前期准备
在开始之前,我们需要做一些准备工作,申请一个账号和密钥,才能调用百度地图的API进而获取所需的数据。
首先要登陆百度地图开放平台http://lbsyun.baidu.com/,完成注册。这个平台是百度地图为开发者提供接口用的,有很多其他的功能,这里只讲POI爬取相关。
注册登录后,在右上角进入控制台:
然后找到左边应用管理下的我的应用,创建一个应用:
然后,输入应用名称,应用类型选择服务端,把地点检索给勾选上。参考文档可以看具体的API调用方法。
值得注意的是,IP白名单的设置,如果想任意IP调用就写上0.0.0.0/0,避免麻烦我们选择这个。
创建完成后我们会得到这样一个应用的AK,就是访问密钥:
在开发文档里找到Web服务API:
选择地点检索V2.0的服务文档,我们会看到使用说明:
其实就是通过一个编辑好的URL,请求数据,然后服务器返回相应的信息。比如使用行政区划区域检索武汉市内的超市信息,则可以编辑:
输入浏览器后回车即可得到想要的信息:
怎样,是不是非常简单呢!今天先介绍到这里,后续我们还会介绍几种地点检索方式以及注意的事项等。
也会介绍如何根据获取的经纬度信息爬取各点之间的真实距离以及行车时间等信息。大家可以小小期待一下哦~