IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP爬高德地图数据 -> 正文阅读

[PHP知识库]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'];//公交返回数据
                        
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:23:01  更:2021-10-30 12:23:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:30:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码