目标:爬取阿克苏地区内的所有医院数据。
一、百度地图开放平台注册,获取到AK。
(1)在百度地图开放平台完成注册。
这个平台是百度地图为开发者提供接口用的,有很多其他的功能,这里只讲POI爬取相关。
(2)登陆百度地图开放平台后
点击“控制台”->“应用管理”->"我的应用“->“创建应用”
然后进行相关设置
1.注意是选择服务端还是浏览器端
比如接下来我的操作是在浏览器进行的,所以我选择浏览器端
2.根据自身需要,设置IP白名单,限制调用ak的电脑,若不限制就设置为0.0.0.0
3.提交
创建成功后就可以在”我的应用“中看到自己创建的ak了,把它复制下来。
【关于ak的说明,详细的可以看首页的开发文档——web服务API部分】
二、有关配额的问题。
对于大多数未认证用户,每天的配额是有限的,不能超过十万次,每分钟不能超过6千次。
在爬取POI上,用一次ak生成的URL页面只能显示20个兴趣点的信息,而一个坐标范围内,最多能生成20个URL页面,即一个坐标范围内,用ak生成的URL页面最多能爬取到400个兴趣点的信息。
如果一个坐标范围内的兴趣点不超过400个,那么一个坐标范围就够了,但是如果超过400个,那就不够用了,需要具体的划分坐标。
三、请求URL。
尝试把下面这个网址复制到浏览器
(http://api.map.baidu.com/place/v2/search?query=%E5%8C%BB%E9%99%A2®ion=%E9%98%BF%E5%85%8B%E8%8B%8F%E5%9C%B0%E5%8C%BA&page_size=20&page_num=0&output=json&ak=9wDdjFgfFqN9dYvoYPEqK0oadGNb9ARw)
(ak换成你自己的ak)
可以看到这样一个页面:
这就是爬取到的其中一页阿克苏地区医院的信息。
将http://api.map.baidu.com/place/v2/search?query=医院®ion=阿克苏地区&page_size=20&page_num=0&output=json&ak=9wDdjFgfFqN9dYvoYPEqK0oadGNb9ARw具体解释一下:
”query=医院” ——查询关键字是医院
”region=阿克苏地区“ ——查询地区是阿克苏地区
“page_size=20&page_num=0”——一共能生成20个URL页面,这个是第0个
【程序语言的排号,一般都是从0开始的,想看下一个就把page_num改为=1,以此类推】由于一页只能生成20个兴趣点,所以20个URL页面就是400个兴趣点。
从total这里可知道,搜索到的总共108个位置信息,小于400,所以不需要对坐标范围进一步划分。【大于400的情况有点麻烦,下回写吧】
“output=json”—— 以json格式来输出
“ak=9wDdjFgfFqN9dYvoYPEqK0oadGNb9ARw”—— ak是9wDdjFgfFqN9dYvoYPEqK0oadGNb9ARw(就是刚刚申请的ak)
所以如果想找其他地区的其他位置信息,就把对应的关键字修改了就Ok
然后把json转换为excel格式
可使用在线转换器TableConvert(百度搜索),注意格式就行,其他问题不大