爬取百度地图poi数据,Python爬取百度图片

  爬取百度地图poi数据,Python爬取百度图片

  目的:抓取昆明市所有中学的数据,包括名称和坐标。

  首先进入基础章节。本章主要讲原理,实现步骤分解,为python代码编写打下基础。

  因为是0基础的开始,所以会比较详细。

  要达到目的,爬取昆明所有中学的数据,就是获取百度地图上昆明所有关键词的地理信息数据(兴趣点)。

  如何抓取百度地图上的数据?

  以下是教程:

  该目录如下:

  1.百度地图开放平台注册,AK接入

  2.ak的描述

  3.请求URL描述

  4.百度地图坐标选择器

  5.获取坐标范围内的感兴趣点。

  6.用excel完成URL数组

  1.百度地图开放平台注册,AK接入。

  (1)

  如果你想获取POI数据,你必须首先登录百度地图开放平台(http://lbsyun.baidu.com/)并完成注册。

  这个平台是百度地图用来给开发者提供接口的,它还有很多其他的功能。这里只说POI抓取。

  当然,如果你有百度账号,可以直接登录。

  这个界面比较熟悉,就不多说了。

  (2)登陆百度地图开放平台后,按照地图上的序号。

  1.点击进入控制台;

  第二,点击创建应用;

  第三,应用程序名称;

  4.必要时设置IP白名单,限制电脑调用AK;

  动词(verb的缩写)提交。

  不及物动词其他默认,不要改。

  然后你就可以看到你创造的ak了。

  2.关于ak的解释。

  关于这部分的解释,详见开发文档——web Service API。

  这里说一下配额的问题。

  首先,百度不支持你造一把ak随便用。对于大部分未认证用户来说,每天的额度是有限的,每分钟不能超过10万次和6000次。

  当然这个额度主要是触发定位功能。

  在爬行POI上,ak一次生成的URL页面只能显示20个兴趣点的信息,而在一个坐标范围内,最多可以生成20个URL页面。

  也就是说,在一个坐标范围内,ak生成的URL页面最多可以抓取400个兴趣点。

  如果昆明的中学不超过400所,那么一个坐标范围就够了,如果超过400所就不够了。

  ak额度的解释到此为止,后面步骤的详细解释会涉及到。

  3.请求URL描述。

  把下面的网址复制到浏览器里看看。

  http://api.map.baidu.com/place/v2/search?查询=中学地区=昆明输出=JSON AK=9s 5 gsyzswbmafu 8 PS 2v2 wvdldlqgaao

  您是否生成了以下页面?

  这是昆明中学的信息。

  然后我们将分章节解释这个URL。

  http://api.map.baidu.com/place/v2/search?查询=中学地区=昆明输出=JSON AK=9s 5 gsyzswbmafu 8 PS 2v2 wvdldlqgaao

  http://api.map.baidu.com/place/v2/search?这个前缀在百度地图(API)上可以找到。

  查询=中学查询关键字是中学。

  区域=昆明查询区域为昆明。

  Output=json以json格式输出。

  AK=9s 5 gsyzswbmafu 8 PS 2v 2 wvdldlqgaao AK是9s 5 gsyzswbmafu 8 PS 2v wvdldlqgaao(这是我刚申请的AK,图片是马赛克。为了写个教程方便理解,没有给它设置IP白名单,所以放在这里。让我们练习使用它。)

  网址很好理解。如果我想在北京找一家酒店,它的网址是:http://api.map.baidu.com/place/v2/search?查询=酒店地区=北京输出=JSON AK=9s 5 gsyzswbmafu 8 PS 2v2 wvdldlqgaao

  但是我们发现网页上呈现的数据只有四五条,比如昆明的中学,北京的酒店,不可能就那么几条。

  然后以昆明的中学为例,对这个网址进行改进。

  http://api.map.baidu.com/place/v2/search?Query=中学地区=昆明page _ size=20 page _ num=0 output=JSON AK=95 gsyzswbmafu 8 PS 2v2 wvdldlqgaao

  把这个网址复制到浏览器里看一看,仔细数一数爬下网页的中学,20所。

  从这个实践中我们可以了解到,每个URL页面只能显示20个兴趣点的信息。

  然后仔细比较这两个URL:

  第一个:

  http://api.map.baidu.com/place/v2/search?查询=中学地区=昆明输出=JSON AK=9s 5 gsyzswbmafu 8 PS 2v2 wvdldlqgaao

  第二个:

  http://api.map.baidu.com/place/v2/search?Query=中学地区=昆明page _ size=20 page _ num=0 output=JSON AK=95 gsyzswbmafu 8 PS 2v2 wvdldlqgaao

  看看这两个有什么区别?

  第二个有一个额外的page_size=20page_num=0。这是什么意思?总共可以生成20个URL页面,这是第0个。我们知道,编程语言的编号一般从0开始。

  将page_size=20page_num=0更改为page_size=20page_num=1,尝试一下,看看第二个页面会生成什么,然后将其更改为page _ size=20page _ num=2.

  当page_size=20page_num=19时,URL为http://api.map.baidu.com/place/v2/search?查询=中学地区=昆明page _ size=20 page _ num=19 output=JSON AK=95 gsyzswbmafu 8ps 2 v2 wvdldlqgaao

  请尝试将其更改为page_size=20page_num=20。网址是http://api.map.baidu.com/place/v2/search?查询=中学地区=昆明page _ size=20 page _ num=20 output=JSON AK=95 gsyzswbmafu 8ps 2v2 vwvdldlqgaao

  如下图,没什么看点。这一次,很容易理解上面提到的内容。在一个坐标范围内,最多可以生成20个URL页面!

  这次我们知道网址最多可以抓取400个兴趣点,所以我们想要获取的兴趣点数量远远不止400个。我们能做什么?

  别急,继续往下看。

  4.百度地图坐标选择器

  在回答上面的问题之前,我们先来了解一个工具,那就是坐标拾取器。

  进入开发文档——工具以支持——坐标选择器。

  打开坐标选择器,进入百度地图坐标选择器系统。

  在这个拾音坐标系上,首先,设置范围;二、点击地图;三、看到当前坐标点如下,复制一下,就可以得到这个点的百度坐标了。

  自己估算一个矩形范围,拿起一个左下角坐标,再拿起一个右上角坐标。

  如果估计实在不好,找一张全国行政区划图。

  这个有点麻烦。我会再写一篇如何获取行政区的教程。

  挑一个昆明的直角坐标。

  左下角:102.174112,24.48894

  右上角:103.67742,26.486868686866

  (获取矩形左下角和右上角坐标值的简单方法在高级章节。)

  5.获取坐标范围内的感兴趣点。

  现在知道昆明的坐标范围了。

  然后把上面的网址改一下。

  这是上面的网址:http://api.map.baidu.com/place/v2/search?查询=中学地区=昆明page _ size=20 page _ num=0 output=JSON AK=95 gsyzswbmafu 8 PS 2v2 wvdldlqgaao

  已更改的URL:http://api.map.baidu.com/place/v2/search?查询=中学界限=24.390894,102.174112,26.548645,103.678942 page _ size=20 page _ num=0 output=JSON AK=95 gsyzswbmafu 8 PS 2 v2 wvdldlqgaao

  对比一下,有什么区别!

  之前的range属性是:region=昆明。

  修改后的范围属性是:Bounds=24.390894,102.174112,26。56666 . 68668666666

  注意,经纬度范围是bounds=左下纬度,左下经度,右上纬度,右上经度。

  其他都没变。在坐标范围内攀爬最多只能爬400点兴趣点。

  好了,回答前面的问题,兴趣点数量远远超过400该怎么办?

  可以划分矩形范围!

  把昆明的范围改成经纬度,左下角和右上角组成一个长方形。如果一个矩形中有超过400个兴趣点,那么我们可以把这个矩形分成四个矩形。分别获取四个小矩形内的兴趣点,然后进行总结。

  如果四个不够,就切成八个;如果八个不够,就切成十六个,只要每个矩形中的兴趣点不超过400个。

  至于有多少,怎么分,那就要靠经验自己去猜测了。

  说了这么多,这就是后续python编程的思路。

  6.用excel完成URL数组。

  这是后面python爬虫脚本编写的热身。

  让我们用excel来强化编码思想。

  目的:

  爬昆明中学的POI。

  关键词:中学

  现有AK:9s 5s 5 gsyzswbmafu 8 PS 2 vwvdldlqgaao

  昆明坐标范围:

  左下角:24.390894,10412

  右上角:26.5448758678667

  URL模板:

  http://api.map.baidu.com/place/v2/search?Query=中学Bounds=24.390894,102.174112,26.548645,103.678942 page _ size=20 page _ num=0 output=JSON AK=95 gsyzswbmafu 8 PS 2 vwvdldlqgaao

  将坐标范围输入excel,计算四个矩形的范围,然后四个矩形对应四列URL(page _ num值0到19),用excel函数生成四列80个URL。

  在这些URL中,只有两个属性发生了变化,即bounds(边界范围)和page_num(页码0-19),其他都没有变化。

  URL的生成是有规律的。

  这是编程的思路,代码章节有解释。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: