调用API获取深圳市的公开大数据集——以高速公路ETC入深圳数据为例

https://opendata.sz.gov.cn/data/api/toApiDetails/29200_00403621在这里插入图片描述

从上图可知,深圳市政府开放数据平台为每一个数据集提供了一个接口地址,并且只需要输入三个参数即可调用数据:appKey、page和rows。首先我们先“提交应用名称”和订阅接口以获取一个appKey,其实就是获取一个专属秘钥。其次,我们进入“测试接口”网页,见下图:在这里插入图片描述

根据上图可知,在完成之前的步骤后,只需要确定“请求方式”和“API参数”后,我们点击蓝色的“发送请求”即可返回相应的内容。下面分别对“请求方式”和“API参数”进行分析。

用过爬虫的人都知道,最常用的网页请求方式就是get和post两种方式:

get:最常用的请求方式,一般用以获取或查询资源信息,也是大多数网站使用的方式,响应速度快;
post:相比于get方式,多了以表单形式上传的功能,因此除了查询信息外,还可以修改信息。
其次,上述的“API参数”需要输入两个值,分别为“page”和“rows”:

page:确定你要查询第几个页文件。例如,营运车辆GPS数据共有176578条,一般来说会将这么大的数据量分成几个部分,比如说分成100个部分,这样每个部分的数据量就不会过大,这里的说的部门就是“page”。
rows:确定你要在每个“page”里面存放多少行数据。例如上面的rows=2,就是第二个page里面只存储2行数据。
一般而言,page和rows是根据网页API的限制来定义的,设定每个page存储1000行,这共需要177个page(176578/1000=176.578)。

3 基于Python+MySQL工具的营运车辆GPS数据的批量获取

通过我们上面的分析,我们知道了营运车辆GPS数据的API调用原理,那么我们如何通过Python来进行批量数据获取呢?下面们将详细介绍这一实现过程。上述提到深圳市政府开放平台均支持get和post的请求方式获取数据,因为本文就用简单的get请求方式。用get方式获取数据需要调用request库中的get方法,所以读者需要先安装这个包。用法如下:

首先将之前的appKey和请求参数合并成一个url:

 # url
url1 = 'https://opendata.sz.gov.cn/api/29200_00403621/1/service.xhtml?page='
url2 = str(page)
url3 = '&rows=10000'
url4 = '&appKey=XXX'
url = url1+url2+url3+url4

将获取到的数据存到strhtml变量中:

strhtml = requests.get(url)

这时候的strhtml代表整个网页的数据,但是我们只需要里面的源码,输入以下语句获取源码:

strhtml.text

获取源码以后,我们需要对其进行解析,转换为json格式:

dic = strhtml.json()

运行完这几个语句后,我们发现我们获取到了page1的5000行数据,他包含在dic的data键,是一个包含5000个元素的list。

由于上述代码只获取到page=1时的数据,如果我们需要获取全部页面的数据,则需要增加如下步骤:

  • 增加一个循环,对每个页面的数据进行获取;
  • 其次,由于获取的数据可读性较差,我们可以将获取的数据转换为DataFrame格式;
  • 因为数据量较大,2133696行,故我们采取每读取一个page就将其存入到MySQL数据中。
import requests
import json
import pandas as pd
import pymysql
from sqlalchemy import create_engine


# 初始化数据库连接
# 按实际情况依次填写MySQL的用户名、密码、IP地址、端口、数据库名,
#一般而言只需要将下面的name和password替换即可
engine = create_engine('mysql+pymysql://name:password@localhost:3306/sample_veh_gps')
        
for page in range(1,428):
    print(page)
    pd_data = pd.DataFrame()
    
    # url
    url1 = 'https://opendata.sz.gov.cn/api/29200_00403621/1/service.xhtml?page='
    url2 = str(page)
    url3 = '&rows=10000'
    url4 = '&appKey=c24286fbd4754aff9d099d1cec484343'
    url = url1+url2+url3+url4
    
    strhtml = requests.get(url)
    strhtml.encoding = 'utf8'
    dic = strhtml.json()
    for i in range(0,len(dic['data'])):
        pd_temp = pd.DataFrame.from_dict(dic['data'][i],orient='index').T
        pd_data = pd_data.append(pd_temp,ignore_index=True)
    try:
        pd_data.to_sql('veh_gps',engine,index=False,if_exists='append')
    except Exception as e:
        print(e)
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 高速公路ETC数据可以用来进行很多研究,以下是一些常见的例子: 1. 交通流量研究:通过分析ETC数据,可以获得高速公路上不同时间段、不同路段的车流量情况,从而了解交通拥堵情况,为交通规划和交通运输管理提供参考。 2. 车辆行驶行为研究:ETC数据可以记录车辆行驶轨迹、行驶速度、停车时长等信息,可以分析车辆行驶规律,如车速分布、车辆出行距离、出行时间等,为交通规划和交通管理提供参考。 3. 交通事故分析研究:ETC数据可以记录车辆行驶的时间、地点等信息,结合公安部门提供的交通事故数据,可以进行交通事故发生的空间和时间分布分析,从而找出事故易发区域和易发时间段,为交通安全管理提供参考。 4. 收费管理研究:ETC数据可以记录车辆通过收费站的时间和地点,可以进行收费管理效率的分析和优化,从而提高收费管理效率,降低交通拥堵和车辆等待时间。 总之,高速公路ETC数据是交通领域中非常有价值的数据源,可以为交通规划和交通管理提供很多有益的信息。 ### 回答2: 高速公路ETC(Electronic Toll Collection,电子收费系统)的数据可以用于许多研究领域,包括交通运输、城市规划和大数据分析等等。下面是几个可能的研究方向: 1. 交通流量分析:通过ETC数据可以获得高速公路的交通流量信息,包括车辆数量、车速和流量密度等。这些数据可以用于研究交通拥堵现象和交通流量预测,以帮助交通管理部门制定更有效的交通规划和管理策略。 2. 道路安全研究:ETC数据还可以用于研究高速公路的事故发生情况和事故原因。通过分析ETC数据中的车辆运行轨迹和速度等指标,可以识别危险路段和时段,并提供相关数据支持,以改善道路安全性。 3. 减排与环保研究:ETC数据可以提供车辆行驶的起止位置和时间等信息,有助于研究尾气排放情况和车辆能源消耗,进而评估交通对环境的影响。这些研究结果可以用于制定减少尾气排放、提高能源利用效率的环保政策。 4. 地理空间分析:通过ETC数据可以获得车辆的行驶轨迹信息,结合地理信息系统(GIS)技术,可以研究车辆的出行模式、出行时间和出行距离等,并对城市的交通网络进行可视化和分析,为城市规划带来参考和决策支持。 5. 经济研究:ETC数据可以用于研究交通运输对经济的贡献和影响。通过分析ETC数据中的车辆类型、行驶里程和出行目的等,可以评估交通运输对商业、物流和旅游等领域的影响,为政府和企业的决策提供参考。 总之,高速公路ETC数据提供了丰富的交通信息,可以用于各种研究领域,为交通规划、城市发展和环境保护等提供有力的支持。 ### 回答3: 高速公路ETC数据可以用来进行许多研究,以下是一些可能的应用领域: 1. 交通流量研究:通过分析高速公路上不同时间段的ETC数据,可以了解交通流量的变化趋势,进而优化交通管理和规划工作。 2. 交通拥堵分析:通过分析车辆的行驶速度和密度等数据,可以识别高速公路上的拥堵点和拥堵原因,为交通拥堵的缓解提供科学依据。 3. 驾驶行为研究:通过ETC数据可以了解车辆的行驶速度、加速度、刹车反应等信息,可以研究驾驶员的行为习惯和驾驶行为对交通流量和安全的影响。 4. 交通事故分析:通过ETC数据可以了解车辆的行驶路线和时间,可以帮助警方或相关部门分析交通事故的发生和原因,从而提出预防措施。 5. 基础设施规划:通过ETC数据可以了解车辆行驶的起点、终点和经过的路段,可以为高速公路的建设规划和扩建提供数据支持。 6. 旅游推广:通过ETC数据可以了解车辆从不同地区到达旅游景点的数量和时间分布,可以为旅游景点的宣传推广和游客服务提供参考。 7. 能源消耗分析:通过ETC数据可以了解车辆的行驶里程、行驶速度等信息,可以帮助评估车辆的燃油消耗和尾气排放情况,为能源的合理使用和环境保护提供数据参考。 总之,高速公路ETC数据是珍贵的交通信息资源,可以支持多个领域的研究,为实现安全、高效、智慧的交通系统提供数据支持和决策依据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值