百度地图 api 自定义图片_不借助API接口爬取百度地图详细停车场信息

e35ea1bee1e21957ebdd8983ae5b0f3e.png
一分钟读完全文

不借助API接口对百度地图的停车场信息进行爬取,可以更为详细的返回停车场的信息如总停车位数、租赁价格(这些信息通过API接口无法获取),且在一定程度上解决了次数限制问题。

借助API的尝试

近期开始做深圳的智能停车研究,手里有一批APP的停车位实时变化的数据,但在分析过程中遇到一个问题,就是停车百事通这个APP只有各个停车场的实时空余车位数,却无总车位数,这对于分析周转率、空闲率及停车场规模研究都十分不利,且停车百事通在深圳拥有3000+的停车场实时信息,规模已经很大了,因此想办法补全其对应的停车场的总停车位数十分关键。

180c158327f9343c9743819459946daa.png

经过尝试,发现百度地图已经在停车场信息里接入外部数据了(点赞百度MAP),比如我在百度地图中搜索“深港新邨-停车场”,红框中可见显示出了该停车场的剩余车位数、总车位数、泊车价格,还标注了数据来源是“罗湖区政府”。

87c9ffba7ad5a627e9a41718622423ce.png

第一步当然想到是去掉用接口了。打开API文档,发现有一个地点详情检索的功能:

09d9df401e29bc89c40ffab6185e02d3.png

于是我按照流程做了尝试,比如我依然搜索“深港新邨-停车场”这个停车场,但如果我需要详请检索,我需要知道这个停车场的UID,而这个又需要从“行政区划区域检索”中先按关键字进行检索,检索URL:

http://api.map.baidu.com/place/v2/search?query=深港新邨-停车场&region=深圳&output=json&ak=秘钥(请替换为自己的秘钥)

检索结果如下,可见UID是可以知道了,但所得信息基本没用,基本能用的就是经纬度和停车场名称了。

8a0ae07da452ce6df248f68e0084f241.png

当然这不是详请检索的结果,我们试试详请检索,检索URL(UID用上一步查出的替换):

http://api.map.baidu.com/place/v2/detail?uid=4ea3f2f1107ccbaaaecb6619&output=json&scope=2&ak=秘钥(请替换为自己的秘钥)

检索结果为:

a66b04a9fcbdbb5fb473646c2d05547e.png

与上相比,的确多了一些信息,比如多了个价格,但我们最需要的总停车位数依然没有。因此,借助API来获取信息基本就走死了。

开发者模式

既然靠API偷懒不成,只能进开发者模式里面找JSON文件了,考虑到这些数据为外部信息来源,我们从EXT里面找,如下:

1b3c3fc4dce9570726228693ffeeebac.png

然后就是对对于的XHR文件的URL进行解析了。https://www.cnblogs.com/yumubaime/p/7172954.html 一文中有做过解释。搜索时提及的URL为:

http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&da_par=direct&pcevaname=pc4.1&qt=s&da_src=searchBox.button&wd=深港新邨-停车场&c=340&pn=0

其中c对于的为城市编号,深圳为340,记得修改。

将该URL返回的JSON文件丢到https://www.json.cn/ 解码,可以看到,的确是我们需要的:

4c13782ccecd538cfc2516e0790a632c.png

到这一步,后续就相对简单了,只需要写一个循环,再进行提取,就能得到所需结果了。

构建循环

构建批量搜索的第一步是构建一个详细的深圳停车场信息,这在http://poi.mapbar.com/shenzhen/G90/已经给出了,如下。因此我们首先需要对这个网站做个爬取,将所有的停车场名称记录下来,然后对每一个停车场构建查询URL,最后循环提交,抽取所需,即可。

e165a3dbb74e383fe9682a5a49bf0482.png

具体代码如下。代码为PY3环境,AK处自行替换秘钥,代码部分参考https://blog.csdn.net/my_lovely_lemon_tree/article/details/78418625。

需要注意,在构建URL时,由于含有中文字符,需要对中文字符做quote()转码。同时,直接不借助API查询得出的XY坐标为百度数字坐标,需要调用geoconv进行转化为百度经纬度坐标(这一步需要秘钥,且有次数限制,开发者一天30万次)。

————19年4月24日更新,加入了页码识别与循环————

import 

最终的运行结果如下:

46e0ff39dc7e2805142c76b978b58819.png

本方法实际也是一种绕开API次数限制检索POI的方法——毕竟坐标转化的次数要远多于地点检索。而且所得的信息要多于直接调用API的地点检索。

2e0e14df6c4886ef78f32b53772ba2c9.png
参考文献

https://blog.csdn.net/my_lovely_lemon_tree/article/details/78418625

http://poi.mapbar.com/shenzhen/G90/

https://www.cnblogs.com/yumubaime/p/7172954.html

http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-placeapi

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值