目录
Requests Library 库使用指南
Request 简单,漂亮的API设计
开始
response = request.get('url')
# 可以向下面这样做
if response.status_code == 200:
print('Success!')
elif response.status_code == 404:
print('Not Found.')
# 还可以这样!
if response:
print('成功')
else:
print('失败')
get()方法返回的是一个Response 对象的一个实例。(在本例中被存储到response 这个变量里)
**提示:**为什么可以这样做?
是因为__bool__() 是Response对象的一个重载方法
注意:if response 语句,状态码200-400 这个表达式的值均为True
如果你不想在if语句里面检查响应的状态码。
相反,你想在请求不成功的时候引发一个异常。
可以这样做
import requests
from requests.exceptions import HTTPError
for url in ['https://api.github.com', 'https://api.github.com/invalid']:
try:
response = requests.get(url)
# If the response was successful, no Exception will be raised
response.raise_for_status()
except HTTPError as http_err:
print(f'HTTP error occurred: {
http_err}') # Python 3.6
except Exception as err:
print(f'Other error occurred: {
err}') # Python 3.6
else:
print('Success!')
如果状态码是成功类状态码,程序继续执行,不引发异常。否则将引发异常。
Response
查看响应的字节内容,可以使用 .content
response = requests.get('https://api.github.com')
response.content
可以编码→转换为字符串。当你使用.text是默认转为utf-8(requests 会从请求头猜测编码,一般是utf-8)
response.text
也可以显式编码。
response.encoding = 'utf-8'
response.text
如果你查看响应,它实际上是序列化的json内容。
为了得到Python的数据结构(字典)
要进行反序列化
response.json()
Headers
header 返回一个类似字典的对象,允许通过键访问header值。
response.header['Content-Type']
header对象有一些特殊之处,HTTP规范将报头定义为不区分大小写。
所以这样写也可以
response.header['content-type']
Query String Parameters
自定义请求,常用查询字符串参数传递值。(params)
例如
import requests
# 搜索github仓库
response = requests.get('https://api.github.com/search/repositories',params=