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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 调用API获取深圳市的公开大数据集——以高速公路ETC入深圳数据为例 -> 正文阅读

[人工智能]调用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)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:42:53  更:2022-04-30 08:43:43 
 
开发: 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/26 8:46:19-

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