热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

爬取百度地图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的生成是有规律的。

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



推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
author-avatar
亲爱的jackvan叔叔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有