PHP爬高德地图数据

PHP怎么爬取高德地图的数据,这对我来说是一门新的课题。网上有好多推荐用Python语言的,但本人是学C语言起家的,脚本语言接触的不多,接到要爬高德数据的需求时,我还是倾向于选择和C语言语法比较接近、比较容易上手的PHP语言。本文以爬取步行方案为例,简单介绍了如何使用PHP语言爬取高德数据,大家共同学习,共同进步!


前言

高德地图有自己的Web服务API,注册高德开发者账号,获取Key之后,就可以通过编程批量获取包括步行、骑行、公交和自驾等多种方案的数据(距离、时间等),对于需要获取百万级别的大量数据,比如获取某市的所有小区到所有公园的以上四种方案的数据时,就需要写代码通过API进行对接和爬取数据


提示:以下是本篇文章正文内容,以获取步行数据为例,介绍了通过PHP语言进行操作的步骤。

一、准备工作

1.注册开发者

访问以下网址注册高德开发者,我是给亲戚爬点数据,就注册个人开发者就行了:
注册高德开发者

2.获取Key

参考以下网址操作方法获取Key:
获取Key

3.准备好输入数据

比如我要爬呼和浩特市所有小区到所有公园的数据,我得先准备好输入:所有小区和公园的高德经度和纬度坐标,示例如下:
小区高德经度和纬度坐标
公园高德经度和纬度坐标

二、爬取步骤

1.创建URL

以爬取步行数据为例,假设小区坐标为(x1,y1),公园坐标为(x2,y2),代码如下(示例):

$head = "https://restapi.amap.com/v3/direction/walking?";//步行
$walkUrl = $head."origin=".$x1.",".$y1."&destination=".$x2.",".$y2."&key=".$key;//步行

2.爬数据

代码如下(示例):

                    $ch = curl_init();
                
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                    curl_setopt($ch, CURLOPT_URL, $walkUrl);
                    
                    $content = curl_exec($ch);
                    
                    
                    curl_close($ch);
                    $contentArr = json_decode($content, true);
                    
                    if($contentArr['status'] == 1)
                    {
                        /*查询web api成功,获取步行距离和时间*/
                        //$walk_distance         = $contentArr['route']['paths']['0']['distance'];
                        //$walk_duration         = $contentArr['route']['paths']['0']['duration'];
                        //其它处理
                    }                    

其它方案,如骑行、公交或驾车的处理,URL和返回码稍做调整即可。


3.网页超时的变通处理

如果我们在一个页面while循环很多次的时候,很容易造成网页超时,我的变通方法是,在谷歌浏览器里面安装一个自动刷新插件Free Auto Refresh,间隔我自己设置的是1s,网页执行时,代码里面设置一个计数,比如运行一次页面,只处理500条数据,处理完的打个标记位,下次通过自动刷新插件重新进入该页面,再从未打标记的里面选取500条处理,如果全部数据处理完了,输出一条打印,看到这个打印,再把自动刷新插件关掉。
自动刷新插件

总结

以上就是如何使用php爬高德的数据,骑行、公交和驾车的爬取,把head、url和对返回码的判断做以下调整就可以了,公交里面的city值是城市编码,我这里填的是呼和浩特的,大家自己根据情况调整:。

    //$head = "https://restapi.amap.com/v3/direction/driving?";//驾车
    //$head = "https://restapi.amap.com/v4/direction/bicycling?";//骑行
    //$head = "https://restapi.amap.com/v3/direction/transit/integrated?";//公交
    
    //$walkUrl = $head."origin=".$x1.",".$y1."&destination=".$x2.",".$y2."&extensions=base&key=".$key;//驾车
    //$walkUrl = $head."origin=".$x1.",".$y1."&destination=".$x2.",".$y2."&key=".$key;//骑行
    //$walkUrl = $head."origin=".$x1.",".$y1."&destination=".$x2.",".$y2."&city=0471&key=".$key;//公交


    //if($contentArr['status'] == 1)//非骑行返回码判断
    //if($contentArr['errcode'] == 0)//骑行返回码判断

    //$walk_distance         = $contentArr['route']['paths']['0']['distance'];//步行和驾车返回数据
    //$walk_duration         = $contentArr['route']['paths']['0']['duration'];//步行和驾车返回数据

    //$walk_distance         = $contentArr['data']['paths']['0']['distance'];//骑行返回数据
    //$walk_duration         = $contentArr['data']['paths']['0']['duration'];//骑行返回数据
    
    //$walk_distance         = $contentArr['route']['transits']['0']['distance'];//公交返回数据
    //$walk_duration         = $contentArr['route']['transits']['0']['duration'];//公交返回数据
                        
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值