我们使用高德开放平台https://lbs.amap.com上的webapi服务,获取POI数据,严格说来不算爬虫,就是调数据接口获取数据而已。
步骤也很简单。
1.获取北京的范围。
2.将北京范围拆分成设定步长的网格,用每个网格矩形搜索小区数据,如果搜索到的数据量大于阈值,则将网格拆分成四个,如此递归,直到矩形搜索到的数据量小于阈值。
3.用2中获取的网格调用接口,获取小区数据,把所有网格的数据汇总到一起就可以了。
稍稍有点难度的,可能就是网格拆分的递归,但只要想明白了,就也很简单。
接下来,看实践。
一.获取北京范围
看说明:高德地图开放平台——开发指南——行政区划查询。
https://lbs.amap.com/api/webservice/guide/api/district
根据请求参数说明,拼接出如下一个url,就可以获取北京范围的数据了,当然,用户key自己申请一个。
https://restapi.amap.com/v3/config/district?keywords=北京&subdistrict=0&extensions=all&key=<用户的key>
polyline就是北京边界坐标点串,拷贝下来,留着备用。
把polyline:后面跟着那一串,复制保存在polyline.txt文件中,双引号不用留。
二.递归拆分网格
为了便于理解,我们把拆分网格和获取数据分开写。
先看说明:
高德地图开放平台——开发指南——搜索POI——多边形搜索:
https://lbs.amap.com/api/webservice/guide/api/search
多边形搜索的示例:
https://restapi.amap.com/v3/place/polygon?polygon=116.460988,40.006919|116.48231,40.007381|116.47516,39.99713|116.472596,39.985227|116.45669,39.984989|116.460988,40.006919&keywords=kfc&output=xml&key=<用户的key>
根据多边形搜索条目下的请求参数说明,可以知道,在url中,我们需要拼接几个参数,才能获取数据。
1.key,需要在高德地图开放平台上申请,既key=用户的key
2.polygonÿ