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()# urlurl1 = '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+url4strhtml = 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').Tpd_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)

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

  1. 大数据存储项目-基于Flink的高速公路ETC入深圳数据实时分析平台

    大数据项目总体流程分为以下4个方面: 数据采集,数据存储与管理,数据处理与分析,数据解释与可视化. 文章目录 数据源 项目要求 项目流程 1.数据爬取与清洗 2.jmeter模拟高并发数据流 3.ka ...

  2. php通过api获取天气信息,调用API获取城市天气信息

    Code: /* 调用API获取指定城市的天气数据,并输出 */ echo ""; $url="http://m.weather.com.cn/data/10121010 ...

  3. AHK调用API获取ListView每列的坐标

    以下代码获取前3列的横坐标: d_Index 为每列的序号(从 0 开始),lv_ID 为ListView的关联变量名,colW_1.colW_2.colW_3 分别为获取到的每列的横坐标. Loop ...

  4. CSV大文件的处理(以ngsim数据为例):分割、导入与合并

    逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不 ...

  5. 前端学习(1961)vue之电商管理系统电商系统之调用api获取数据

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  6. 前端学习(1945)vue之电商管理系统电商系统之调用api获取数据

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  7. 前端学习(1917)vue之电商管理系统电商系统之绘制面包屑导航和卡片视图调用api获取数据

    目录结构 router.js import Vue from 'vue' import Router from 'vue-router' import Login from './components ...

  8. 微信小程序—调用API获取天气情况

    1.在微信开发者工具中的.js文档参考wx.getLocation函数获取当前地理位置,注意在app.json文件中permission授权. "permission": {&qu ...

  9. tushare调用API获取金融相关数据

    首页:https://tushare.pro/ 整体的思路是: 首先获得token,可以参考官网教程 代码中传入token,调用接口 步骤 1. 获得token 首先进入网站:https://tush ...

最新文章

  1. Qt简介、安装及在Ubuntu14.04 32位上简单使用举例
  2. 视频处理的知识_开源项目_项目列表
  3. 用js实现放大镜的效果
  4. html游戏闪,HTML最简单的文字闪烁代码
  5. 金融领域下的数据挖掘算法应用:逻辑回归模型
  6. 技术解析:如何用pyecharts绘制时间轮播图
  7. 不卖了?这家公司暂停门店销售iPhone!
  8. 多区域OSPF基本配置
  9. 新建mavan项目转为web项目
  10. 人脸数据集——亚洲人脸数据集
  11. efi文件错误服务器崩溃,电脑故障分析:Winload.efi文件丢失导致蓝屏的解决方法...
  12. 决策树和CART决策树
  13. [ Keil ] keil4工程转keil5方法
  14. 腾讯是如何一刀刀,在15年间干死那些竞争对手的?
  15. 基于JSP的鲜花店商城平台【数据库设计、源码、开题报告】
  16. 高并发访问数据库引发的故障
  17. [独立游戏][纳税]个人独立游戏缴税纳税相关问题
  18. PS学习笔记------运用脚本及自动化批量处理
  19. java读取txt文件乱码解决方案
  20. EDA元器件封装导入allegro

热门文章

  1. 用Asprise的OCR包,处理验证码
  2. 智能照明控制系统在医院的设计与应用
  3. CFileDialog 多文件选择注意事项
  4. 从京东技术演进看互联网企业的成长历程
  5. 提高PPT操作APM的小技巧
  6. 为什么t检验只适用小样本均值检测?
  7. 买CS鼠标想到的鼠标移动距离跟指针移动距离的对应
  8. linux muduo 编译安装,muduo记录
  9. pysheeet ,一个标星近 6k ,小众且又不失文艺范,又很有价值的一个开源库
  10. 在美团呆了7年的架构师带你解读Disruptor系列并发框架