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)
{
}
其它方案,如骑行、公交或驾车的处理,URL和返回码稍做调整即可。
3.网页超时的变通处理
如果我们在一个页面while循环很多次的时候,很容易造成网页超时,我的变通方法是,在谷歌浏览器里面安装一个自动刷新插件Free Auto Refresh,间隔我自己设置的是1s,网页执行时,代码里面设置一个计数,比如运行一次页面,只处理500条数据,处理完的打个标记位,下次通过自动刷新插件重新进入该页面,再从未打标记的里面选取500条处理,如果全部数据处理完了,输出一条打印,看到这个打印,再把自动刷新插件关掉。
总结
以上就是如何使用php爬高德的数据,骑行、公交和驾车的爬取,把head、url和对返回码的判断做以下调整就可以了,公交里面的city值是城市编码,我这里填的是呼和浩特的,大家自己根据情况调整:。
|