Python 网络 API 知识整理

一、什么是 API?

应用编程接口(Application Programming Interface)。API 是一个接口。创建它的目的是帮助两个不同的应用交互。

二、知识补充:

1、shell 的 curl 程序:

  • 将获取该网页的内容并显示到终端里
    curl 'https://www.baidu.com/'
  • 将获取的网页内容保存到指定的文件中
    curl -o baidu.html 'https://www.baidu.com/'

2、公开 api 服务开源项目
https://github.com/public-apis/public-apis

3、不安全的空格
发生这种情况的原因是制定 URL 标准的人士认为空格字符“不安全”。也就是说,URL 中的空格会引入错误和不确定性,因此不允许出现空格,但是为了显示空格,浏览器会将空格替换为专门表示空格的特定代码 %20。
URL 的标准:
在转录、排版 URL 或用文字处理程序处理 URL 时,重要空格可能会消失,并且可能会引入不必要的空格,因此空格字符不安全。
注意:
当你在浏览器里输入 URL 时,通常不需要担心这种情况,因为浏览器会自动将空格替换为 %20 代码。但是,如果你使用 curl 从 shell 发出请求,则不会自动转换,因此你需要手动将空格替换为 %20。

三、requests 模块

1、在终端里使用 pip 命令安装 requests:

pip install requests
或:
pip3 install requests

2、requests 使用:

r = requests.get('https://www.baidu.com')
r.status_code  				# 200
r.headers['content-type'] 	# 'text/html'
r.encoding 					# 'utf-8'
r.text 						# 文本
r.json() # json  <bound method Response.json of <Response [200]>>

3、Try 和 异常处理

  • 异常(Exception):
    Python中内置的值。它们是一种特殊的值,叫做 异常。如:NameError、TypeError、ZeroDivisionError、IndentationError(缩进错误)、IndexError等。
  • 发生异常
    Python 会通过退出程序并显示 Traceback 来追踪和处理异常。
  • 异常处理:
    try … except
x = int(input("Enter a number."))
try:
    print(3/x)
except ZeroDivisionError:
    print("Can't divide by zero!")

注意⚠️:
有一种错误无法用 try … except 捕获,即 SyntaxError (语法错误❌)。因为 SyntaxError 发生在 Python 开始运行代码之前
requests 模块在尝试连接服务器但是无法连接时,会发生 requests.exceptions.ConnectionError 异常,包括网络连接中断或者服务器没有运行以及其他问题。

示例:

import requests

def get_server():
     try:
        r = requests.get("https://www.udacity.com")
         print(f"request code is {r.status_code}") 	# f -string 
     except requests.exceptions.ConnectionError:
         print("Could not connect to server.")

get_server()
# 打印结果:request code is 200
get_server()
# 打印结果:Could not connect to server.

附:
Python_Request_OK

网络API接口请求成功的必要条件示例图

番外篇:Python 3.6 新特性 f-string
f -string 提供了一种方法,可以在字符串文字中使用最小的语法嵌入表达式。”应该注意的是,f-string实际上是在运行时计算的表达式,而不是一个常量值。在Python源代码中,f-string是一个文本字符串,前缀为f,其中包含括号内的表达式。表达式被替换为它们的值。”
使用方法: f’{}'
例如:

name = "Fred"
print(f'He said his name is {name}.')

f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值