一文了解requests基本和高级用法

本文详细介绍了Python的requests库,包括GET、POST请求,设置headers,处理cookies,超时与异常处理,以及Session对象和代理的使用。通过实例代码展示了如何进行文件上传、JSON数据发送以及响应数据的处理。
摘要由CSDN通过智能技术生成

一文了解requests基本和高级用法

编辑日期:2021-07-05

代码验证环境:python 3.7.10 + jupyter lab

操作系统:OSX 11.4

目录
  • 一、请求
    • 1.1 快速入门
    • 1.2 在URL中传递GET参数
    • 1.3 发送POST请求
      • 1.3.1 一般情况
      • 1.3.2 发送JSON
      • 1.3.3 上传文件
        • 1.3.3.1 单文件上传
        • 1.3.3.2 多文件上传
        • 1.3.3.3 大文件上传
  • 二、响应消息
    • 2.1 文本信息
    • 2.2 二进制响应数据
    • 2.3 JSON响应数据
  • 三、headers
    • 3.1 自定义请求header
    • 3.2 查看响应header
  • 四、COOKIES
    • 4.1 查看响应cookies
    • 4.2 设置请求cookies
  • 五、重定向和访问历史
  • 六、超时、错误及异常处理
    • 6.1 超时
    • 6.2 错误及异常处理
  • 七、高级用法
    • 7.1 会话保持:Session对象
    • 7.2 代理

一、请求

1.1 快速入门

导入requests库,使用各种方法请求:

# GET方法
r = requests.get('https://api.github.com/events')
# POST方法
r = requests.post('https://httpbin.org/post', data = {
   'key':'value'})

# PUT, DELETE, HEAD and OPTIONS等方法  
r = requests.put('https://httpbin.org/put', data = {
   'key':'value'})
r = requests.delete('https://httpbin.org/delete')
r = requests.head('https://httpbin.org/get')
r = requests.options('https://httpbin.org/get')

请求成功后,requests会返回Response对象(以上代码片段中的r),我们需要的各种信息都在这个对象中,如需要查看返回内容,用r.text

1.2 在URL中传递GET参数

我们可以在请求时,将含有参数的字典传给params参数,实现传递GET参数

>>> payload = {
   'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)
>>> print(r.url)
https://httpbin.org/get?key2=value2&key1=value1

需要注意,参数字典如果有key的值为None的,requests不会将这个key传入URL参数。字典值也可以使用list数据传入一组值:

>>> payload = {
   'key1': 'value1', 'key2': None,  'key3': ['value2', 'value3']}
>>> r = requests.get('https://httpbin.org/get', params=payload)
>>> print(r.url)

https://httpbin.org/get?key1=value1&key3=value2&key3=value3

params也支持一些元祖(tuples)构成的数组:

>>> payload = [('key1', 'value1'), ('key1', 'value2')]
>>> r = requests.get('https://httpbin.org/get', params=payload)
>>> print(r.url)

https://httpbin.org/get?key1=value1&key1=value2

1.3 发送POST请求

1.3.1 一般情况

一般情况下,我们可以在请求时,将含有参数的字典传给data参数(注意区别GET参数params),实现发送表单数据:

>>> payload = {
   'key1': 'value1', 'key2': 'value2'}

>>> r = requests.post("https://httpbin.org/post", data=payload)
>>> print(r.text)
{
   
  ...
  "form": {
   
    "key2": "value2",
    "key1": "value1"
  },
  ...
}

data也支持传入由多个元祖(tuples)构成的数组:

payload_tuples = [('key1', 'value1'), ('key1', 'value2')]
1.3.2 发送JSON

使用json参数传递json格式数据,需要注意,当datafiles不为空的时候,requests会忽略json参数。

>>> url = 'https://httpbin.org/post'
>>> payload = {
   'some': 'data'}
>>> r = requests.post(url, json=payload)
>>> r.json()

{
   'args': {
   },
 'data': 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值