Python爬虫--获取POI

一、爬虫简介

    爬虫是一种自动化获取互联网信息的程序。通过模拟人类浏览器行为,自动抓取网页上的数据,并进行处理和分析。他能够获取常规的网页HTML源代码,CSS、JavaScript文件,图片、视频等二进制文件,还有很多API接口类的信息像JSON类信息等。

二、如何通过python获取POI

POI表示某个地理位置周边的信息。本文使用高德地图api,以获取广东财经大学周边5000米范围内的粤菜馆为例进行阐述。

(声明:本人非计算机相关专业,编程基础也寥寥无几,文章仅是作为选修课学习内容和个人爱好,分享和记录学习过程。)

具体流程主要分为三步:

1.获取所需网页信息

2.将信息进行解析、提取 

3.将数据保存为自己想要的格式。

 

(一)获取所需网页信息。

这里我也将其分为三小步:首先确定广财的具体位置,其次获取地点信息,最后对其进行周边搜索,获取网页信息。

1.确定具体位置

要获得广财大周边信息,首先我们要确认广财大的具体位置,这里有两种方法。

方法一:利用高德地图拾取器确认其坐标位置。

网址如下:

高德地图APIhttps://lbs.amap.com/tools/picker*温馨提示:如果只是作为游客查询,查询地点的坐标精度只有两位数,其实是不够精确的。将”按关键字搜索“获取到的广财大的坐标重新输入”按坐标搜索“,会发现显示出的地址与原来想要查询的有偏差。如图所示:

be8b91d6eb4b434d92c24e304c9da395.png

a790b750855b4ec491fb1714a5ecb295.png

这里只要在高德地图进行登录及认证,就可以获得更精确的坐标了。

结果如图所示,可以精确到小数点后六位:

405040f3edbf4ef8a6d495386b250f41.png

 

方法二:关键字搜索POI

高德地图为我们提供了搜索POI功能,能够通过文本关键字搜索想要的地点信息。

3d7fdec20d4e45a0b297494b366e2c4c.png

具体步骤如下:

7bf78fd82b054fa396214777d7aafe64.png

第一步,申请wed服务api类型key。

点击高德地图api控制台—管理应用—我的应用

db44ed9e6aca4935bdb57c7b337dc19b.png

创建新应用-添加key

230c09fa6460474c8832c011a9c9b886.png

这里服务平台选web服务

6d7eab0544184c56b6acba3e7dd479c3.png

所需key创建完成

12305313a4bc4a4da6148507a82b5a8d.png

 

第二步,发起请求。

我们通过高德地图关键字搜索api提供的url访问地点信息,代码如下:

URL是对互联网上得到的资源的位置和访问方法的一种简洁表示,是互联网上标准资源的地址。)

https://restapi.amap.com/v5/place/text?parameters

其中parameters替换为图中所示必填的参数key和keywords(或types)1f695c8c30194085a4536272f52dfbde.png

在本文例子下完整代码如下:

 

https://restapi.amap.com/v5/place/text?key=48a31ebd6dd0a05b15b97f23393f7895(这里换成自己创建的key)&keyword=广东财经大学

(用&连接各个参数)

写好之后可以将url输入浏览器,可以访问一个包含广财大的地址信息的json文件,如下图所示。同时可以通过此检查url是否正确。

2b872afef1c84defb058b85550c80f74.png

到这里我们获得了广财大的坐标信息就足够了,不用进行第三步,到后面获取我们想要的周边粤菜馆信息时候再进行解析即可。

 

2.获取周边信息
1ec2bed9d2054f3f92177d3ca527a3bd.png

 

这里和上一步步骤几乎相同,不过多赘述,这里几个参数进行解释:

types:由于我们要查询的是粤菜馆,所以必须要填写参数types作为制定类型。types的规则说明中有“POI分类码表”excel表。可以查询想要的地点类型。这里types=050103,如果需要查询多个类型,用|将代码隔开。

d8e4177f9d9e43cc850a05f61bed3877.png

radius、page_size和page_num:分别表示要搜索的半径范围,每页25条数据,第几页。这些参数也可以不填,则默认为缺省值

 

此步url为:

https://restapi.amap.com/v5/place/around?key= 48a31ebd6dd0a05b15b97f23393f7895(这里换成自己创建的key)&types=05103&location=113.354053,23.090164&radius=5000&page_size=25&page_num=1

访问结果如图:

171daab1e848444ca91ed87e0b1f0b49.png

到这里我们已经以json文件的形式获得到我们想要的信息了,但看起来并不整齐直观,接下来我们需要将它解析出来。

(二)将信息进行解析、提取 

这里我们用python对所获得的json文件进行解析、提取。

需要用到几个库:

requests,请求访问json文件

pandas,用于存储、处理数据

openpyxl,将数据导入excel

代码如下(按自己理解写的注释,可能解释的不专业):

*最后导入的excel表格需要自己先创建好,再将路径写入代码。

e016a3881f244790b6066a3cf384f8bc.png

 

(三)将数据保存为自己想要的格式

这里我们将数据保存在excel中,结果如图所示:

db19a88e5f19474f8345d47806333f82.png

以上为本案例所有过程,希望大家批评指正。

 

 

 

 

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Java和Python爬虫项目实战源码.zip 自己动手写网络爬虫》,并基于Python3和Java实现 为什么采用宽度优先搜索策略? 深度优先遍历可能会在深度上过“深”而陷入“黑洞”; 重要的网页往往距离种子网页比较近,越深的网页的重要性越低; 万维网深度最多17层,但到达某面总存在一条很短的路径,宽度优先遍历会以最快的速度达到这个网页; 宽度优先遍历有利于多爬虫的合作抓取,多爬虫合作通常先抓取站内链接,抓取的封闭性很强; 解析HTML网页---Jsoup Maven中配置: <dependency> <groupId>org.jsoup</gorup> <artifactId>jsoup</artifactId> <version>1.10.3</version> </dependency> 正则表达式: 对URL进行过滤,只提取符合特定格式的链接; 提取网页内容; HTMLParser: 文本抽取; 链接抽取; 资源抽取; 链接检查; 站点检查; URL重写; 广告清除; 将HTML页面转化成XML页面; HTML页面清理; Rhino是一个由Java实现的JavaScript语言解析引擎,Rhino的主要功能是管理脚本执行时的运行环境 非HTML解析: PDF文件:PDFBox解析PDF文件 FontBox:处理PDF字体的Java类库 JempBox处理XMP元数据 的Java类库 Office文档:POI项目 POI读写Excel、Word、PPT文件 POI-HSMF读写Outlook POI-HDGF读写Visio POI-HPBF支持Publisher 其他文件 多媒体内容抽取: 抽取视频内容 视频内容一般分为四部分:帧、镜头、情节和节目 关键帧的提取---动态规则策略、基于视觉模型的自适应关键帧提取策略、基于镜头边界系数的关键帧提取策略 基于镜头边界系数的关键帧提取分3个步骤进行: 设置最大关键帧数M 每个镜头的非边界过渡区的第一帧确定为关键帧 【找镜头边界:基于帧差的镜头边界检测方法、基于模型的镜头边界检测方法、基于学习的镜头边界检测方法】 使用非极大值抑制法确定镜头边界系数极大值并排序,以实现基于镜头边界系数的关键帧提取 JMF(Java视频处理): 功能 a)在Java Applet和应用程序中播放贵重物品媒体文件,如AVI、MPEG、WAV等; b)可以播放从互联网上下载的媒体流; c)可以利用麦克风、摄像机等设备截取音频和视频,并只在成多媒体文件; d)处理多媒体文件,转换成文件格式; e)向互联网上传音频和视频数据流; f)在互联网上播放音频和视频数据; 组件 a)数据源,如一个媒体文件 b)截取设备,如麦克风、摄像机等 c)播放器-Player,JMF中的接口是Player,将音频/视频数据流作为输入,将数据流输出到音箱或屏幕上 d)处理器-Processor,Processor接口继承了Player接口,支持Player对象所支持的功能外还可以控制对于输入的多媒体数据流进行何种处理以及通过数据源向其他Player对象或Processor对象输出数据 e)数据格式-Format,保存多媒体格式信息 f)管理器,4种管理器Manager、PackageManager、CaptureDeviceManager、PlugInManager Sourceforge-org.farng.mp3(Java音频处理): 音乐:歌手名+歌曲名等元信息,以MP3文件大体分为三部分: a) TAG_V2(ID3V2) 包含了作者、作曲、专辑等信息,长度不固定,扩充ID3V1信息 b) Frame 一系列的帧,由帧头(MP3的位率、采样率、版本等信息)和数据实体两部分组成 c) TAG_V1(ID3V1) 包含作者、作曲、专辑等信息,长度128字节 解析Json数据---Json Maven中配置: <dependency> <groupId>com.alibabap</gorup> <artifactId>fastjson</artifactId> <version>1.2.35.3</version> </dependency> 评估页面的重要程度 链接的欢迎程度---反向链接(即指向当前URL的链接)的数量和质量决定的,定义为IB(P); 链接的重要程度---关于URL字符串的函数,仅仅考察字符串本身,比如认为".com"和"home"的URL比".cc"和"map"高,定义为IL(P); 平均链接的深度---根据上面所分析的宽度优先的原则,计算全站的平均链接深度,然后认为距离种子站点越近的重要性越高

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值