返回顶部
首页 > 资讯 > 后端开发 > Python >python编程之API入门: (一)使
  • 252
分享到

python编程之API入门: (一)使

入门pythonAPI 2023-01-31 00:01:28 252人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

在网络编程中,我们会和api打交道。那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用。 API是"Application Programming Interface(应用程序编程接口)"的缩写。

网络编程中,我们会和api打交道。那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用。
API是"Application Programming Interface(应用程序编程接口)"的缩写。如果那一大堆的术语和定义让你头晕,不妨试着这样理解:网络服务商(比如百度、微博等)存有大量数据,我们可以查询数据,但是需要按照一定的格式/协议,否则服务商不知道我们的需求无法进行处理,我们拿到数据也看不懂。通过API接口规范,通信双方都能明白对方传送的信息和数据,同时也简化了操作(只要按照规定的格式输入,就可以得到已知格式的输出,我们无需了解具体实现的技术细节,是不是很省心呢?)

下面以百度地图WEB服务API的调用为例。

(排版时图片放到最后了,请您到文末查看图片。)要使用的是图中所示“正/逆地理编码服务”。在使用服务前,需要登录百度账号(如果没有就注册一个),申请成为百度开发者,然后创建一个你自己的应用,就可以收到一个对应的服务密钥(AK)。在服务配置页面,有两种校验方式,一种是IP白名单方式,一种是sn校验方式。我参考@廖Sir的博文
python实现百度地图API获取某地址的经纬度选择了sn校验方式,这样页面上会有SK。请将AK和SK两个序列码保存好,这就是你个人的验证信息。下一步使用百度地图API时要用到。
要编写的这个Python小程序实现的功能是:输入某个地址,得到相应的经纬度坐标信息。分三步实现。1、生成url(用于提交到API进行查询)2、与API交互,查询并返回数据(JSON格式) 3、利用json解析并输出。

下面分别介绍具体实现。
1、sn码及url的生成
url= Http://api.map.baidu.com/geocoder/v2/?address=“输入的地点名”&output=json&ak='你的AK码'&sn='你的sn码'。
需要注意的是:

  • 由于url中有中文字符串,需要使用函数urllib.parse.quote(inputstr, safe="/:=&?#+!$,;'@()*[]")转换一下编码。
  • 在url里output可以选择输出为json格式或xml格式,默认是xml格式。
import urllib.request,urllib.parse,urllib.error
import json
import hashlib

MyAK='这里请填入你的AK'
MySK='这里请填入你的SK'

while True:
    address = input('输入地点:')
    if len(address)<1:
        break

    #产生sn码
    queryStr="/geocoder/v2/?address="+address+'&output=json&ak='+MyAK
    encodedStr=urllib.parse.quote(queryStr, safe="/:=&?#+!$,;'@()*[]")
    rawStr=encodedStr+MySK
    sn=(hashlib.md5(urllib.parse.quote_plus(rawStr).encode("utf8")).hexdigest())

    #生成url      
    url=urllib.parse.quote("http://api.map.baidu.com"+queryStr+"&sn="+sn,safe="/:=&?#+!$,;'@()*[]")
    print('Retrieving',url)

2、输入url,利用urllib从API读取数据

    #从API读取数据
    uh=urllib.request.urlopen(url)
    data=uh.read().decode()
    print('Retrieved',len(data),'characters')

3、利用json对返回数据进行解析。

#解析数据
    try:
        js=json.loads(data)
    except:
        js=None

    if not js or 'status'not in js or js['status']!=0:
        print('======Failure====')
        print(data)
        continue
    print(json.dumps(js,indent=4,ensure_ascii=False))

上一段可输出得到json格式的数据。下面即为输入“百度大厦”后程序输出的json格式数据。在这里一开始中文字符"商务大厦"不能正确显示,我从@msay的博文python中文编码&json中文输出问题中找到了答案,json.dumps函数默认转换为ASCII编码,中文字符就无法转换显示,因此要设置ensure_ascii=False。

{
    "status": 0,
    "result": {
        "location": {
            "lng": 116.30695597357376,
            "lat": 40.05738753357608
        },
        "precise": 1,
        "confidence": 80,
        "comprehension": 100,
        "level": "商务大厦"
    }
}

最后,提取经纬度坐标等信息。

    #获取经纬度坐标和地址类型
    lat=js["result"]["location"]["lat"]
    lng=js["result"]["location"]["lng"]
    print('纬度',lat,'经度',lng)
    level=js["result"]["level"]
    print('地址类型',level)

总结:按照规范发送url以及对返回json或xml格式数据正确解析,另外注意中文字符的编码问题,就可以上手API。怎么样?你也快来试试吧!

感谢@廖Sir和@msay两位博主,他们的博文让我受益良多。

--结束END--

本文标题: python编程之API入门: (一)使

本文链接: https://lsjlt.com/news/182162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python编程之API入门: (一)使
    在网络编程中,我们会和API打交道。那么,什么是API如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用。 API是"Application Programming Interface(应用程序编程接口)"的缩写。如...
    99+
    2023-01-31
    入门 python API
  • Python编程入门(一)
    Python编程入门(一)=========================================================================================概述:===============...
    99+
    2023-01-31
    入门 Python
  • Python API教程:API入门
    什么是API? 一个API,或被称为应用程序接口,是一个服务器为你提供一个接收或发送数据的代码。API通常用来接收数据。 本文就集中焦点在此话题中。 当我们想从一个API中接收数据,我们需要开始请求。...
    99+
    2023-09-07
    python 开发语言
  • 二维码编程:Python API入门教程
    二维码(QR Code)是一种被广泛应用于商品条形码、门票、电子支付等领域的二维码技术。Python作为一种高效、易学易用的编程语言,自然也提供了相应的API来处理二维码。本篇文章将为大家介绍Python中二维码编程的基础知识和使用方法。...
    99+
    2023-09-18
    二维码 编程算法 api
  • Python编程入门指南之函数
    目录Python编程:函数定义和调用函数向函数传递信息传递实参:位置实参传递实参:关键字实参传递实参:默认值传递列表禁止函数修改列表传递任意数量实参返回值返回简单值让实参可选返回字典...
    99+
    2024-04-02
  • ​​​​​​​Python 入门学习之函数式编程
    目录前言把函数作为对象把对象作为函数数据结构内的函数把函数作为参数和返回值嵌套函数单表达式函数(Lambda 表达式)Map、Filter 和 ReduceMapFilterRedu...
    99+
    2024-04-02
  • Python与AI之一_入门
    Python与Java, C, C++并列为全球4大最流行语言. 从C到C++,到Java再到Python, 细节越来越少, 让开发者把更多的精力放在”做什么”, 而不是”怎么做”. 早就听说Python容易, 但没想到这么容易, 机器学...
    99+
    2023-01-31
    入门 Python AI
  • Flink入门(五)——DataSet Api编程指南
    Apache Flink Apache Flink 是一个兼顾高吞吐、低延迟、高性能的分布式处理框架。在实时计算崛起的今天,Flink正在飞速发展。由于性能的优势和兼顾批处理,流处理的特性,Flink可能正在颠覆整个大数据的生态...
    99+
    2020-07-01
    Flink入门(五)——DataSet Api编程指南
  • Wordpress教程(一) Rest Api简单入门
    Wordpress是当今最强大的博客+cms系统,最近在用wordpress给客户搭建一款小程序,涉及到Rest Api,于是有了本篇,本篇根据官方文档和个人的理解编写,如有错误或者疏漏,请同学指...
    99+
    2023-09-04
    php
  • python入门系列之一:Centos6
    1)编译安装python2.7[root@mysql-master ~]# python -V Python 2.6.6 查看python的版本信息(之前的yum是通过yum安装的) [root@mysql-master src]# wge...
    99+
    2023-01-31
    入门 系列 python
  • python入门教程(一)
      我们依然不讲代码,而是先说命令行。   为什么命令行如此重要?之前说到,命令行是你和电脑对话的地方。你可以用句子的方式把信息发给电脑,电脑再以句子的方式给你回应。在编程领域,有些消息只能用命令行告诉电脑——或许是编程人员早就习惯了,或许...
    99+
    2023-01-31
    入门教程 python
  • Python编程:字典入门,Python
    字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。 比如有份学生基本信息表,姓名,张三,学号12345,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数...
    99+
    2023-01-31
    字典 入门 Python
  • python之selenium入门教程
    selenium,一个第三方库,可以通过给driver发送命令来操作浏览器,以达到模拟人操作浏览器,实现网页自动化、测试等,减少了重复性工作。 selenium的工作的基本架构如下: 安装 本文是在...
    99+
    2023-09-11
    python selenium
  • Java网络编程之入门篇
    目录一、网络基础二、网络协议URL类一、网络基础   二、网络协议 实现TCP的网络编程 例子1:客户端发送信息给服务端,服务端将数据显示在控制台上 p...
    99+
    2024-04-02
  • 一篇文章带你入门Java之编程规范
    目录引言命名规则代码排版1.代码缩进对齐2.遇到分号换行3.大括号、括号等成对出现4.加上注释Java注释注释的作用注释的3种类型给代码加上单行注释给代码加上多行注释给代码加上文档注...
    99+
    2024-04-02
  • Python入门之集合的使用教程
    目录前序集合操作创建集合访问集合判断集合是存在指定值集合添加集合删除集合函数返回集合的副本判断集合内是否包含另一个集合并集差集交集补集交集判断前序 在Python中,集合(Set) ...
    99+
    2024-04-02
  • Python入门之字典的使用教程
    目录前沿字典操作创建字典嵌套字典dict() 创建字段访问字典中的值更新字典删除字典元素检查键是否存在字典的遍历字典函数获取字段的长度复制字典批量创建键前沿 Python字典是一种可...
    99+
    2024-04-02
  • python基础入门之列表(一)
    目录正文增删改查循环其他的功能函数元组因为最近公司有python项目维护,所以把python的基础入门的书整理一遍,因为有些忘记了,同时在看<<python编程>&...
    99+
    2024-04-02
  • Room Kotlin API的使用入门教程
    目录定义数据库表访问表中的数据插入数据查询数据创建数据库测试 DaoRoom 是 SQLite 的封装,它使 Android 对数据库的操作变得非常简单,也是迄今为止我最喜欢的 Je...
    99+
    2024-04-02
  • ​​​​​​​Python入门学习之函数式编程的方法
    本篇内容介绍了“Python入门学习之函数式编程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在 Python 中,函数是「头等公...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作