Python 网络请求库 requests 的简单使用

开篇

本文来讲一下 Python 中如何发送 GET,POST 请求。一般不推荐使用内置模块 urllib,简单搜索调研后,用的更多的是 requests 库。废话不多讲,直接进入正题。

正文

安装

pip install requests

你也可以查看 官方安装入口

使用

我们常用的就是 GET、 POST 请求方式,其他方式大同小异。使用前请先

import requests

GET 请求
  1. 简单的 GET 请求
requests.get('https://api.github.com/events')
  1. 通过 url 传递参数
params = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=params)

# 可以通过打印 r.url 验证
print(r.url)
# https://httpbin.org/get?key1=value1&key2=value2&key2=value3
  1. HTTP BASIC AUTH(post 方式同理)
params = {'key1': 'value1', 'key2': 'value2'}
http_basic_auth = requests.auth.HTTPBasicAuth('username', 'password')
requests.get(url, params=params, auth=http_basic_auth) 
  1. 设置超时时间(post 方式同理)

默认情况下,不设置超时时间,请求可能会因为某些原因(比如:网络故障)阻塞等待数分钟,甚至更久。

timeout 分为两种, 分别是 connect timeout 和 read timeout。

可以通过元祖的方式设置超时时间,如下所示

timeout=(connect timeout , read timeout ),单位为 秒。

当你通过 timeout=1方式设置时,会自动转化为timeout=(1, 1)

# 单位: 秒
requests.get('https://github.com/', timeout=0.001)

# 规定时间内请求未成功,报如下错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)
POST 请求
  1. 简单的 post 请求
requests.post('https://httpbin.org/post', data = {'key':'value'})
  1. 请求体为 json 字符串
# 指定 header
header = {'Content-Type': 'application/json'}
# 定义 json 对象
data_json = {'key1': 'value2'}
# 转为 json 字符串(这里通过 json 库转为 json 串)
data = json.dumps(data_json)
# 发送请求
requests.post(url, data, headers=header)
  1. 传输文件
url = 'https://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}

r = requests.post(url, files=files)
print(r.text)
## 注释
{
  ...
  "files": {
    "file": "<censored...binary...data>"
  },
  ...
}
响应结果处理
  1. 响应状态码
r = requests.get(url)
code = r.status_code
  1. 响应数据为 json (post 方式同理)
r = requests.get(url)
data = r.json()
  1. 获取响应头
r = requests.get(url)
print(r.headers)

# 注释
{
    'content-encoding': 'gzip',
    'transfer-encoding': 'chunked',
    'connection': 'close',
    'server': 'nginx/1.0.4',
    'x-runtime': '148ms',
    'etag': '"e1ca502697e5c9317743dc078f67693f"',
    'content-type': 'application/json'
}
其他请求方式
requests.put('https://httpbin.org/put', data = {'key':'value'})

requests.delete('https://httpbin.org/delete')

requests.head('https://httpbin.org/get')

requests.options('https://httpbin.org/get')

总结

以上就是 requests 库的常规使用方法, 其他用法: 比如 cookie, session,exception ,请参考 官方文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值