Requests


Requests


Requests是Python的HTTP库,用于发起HTTP请求

安装

pip install requests

使用

import requests

发起请求

GET 请求

requests.get(url, params=None, **kwargs)

参数

  • url – 请求路径
  • params – (可选) 发起请求所携带的参数
  • **kwargs
r = requests.get(
    # 请求路径
    'https://api.com/get',
    # 携带的参数
    params={'key': 'value'},
)

POST 请求

requests.post(url, data=None, json=None, **kwargs)

参数

  • url – 请求路径
  • data – (可选) 发起请求所携带的参数
  • json – (可选) 请求中要发送的json数据
  • **kwargs
r = requests.post(
    'https://api.com/post', 
    # 发送form表单格式
    data={'key': 'value'},
    # 发送JSON格式1
    data=json.dumps({'key': 'value'},
    # 发送JSON格式2
    json={'key': 'value'},
    # 发送multipart文件格式
    files={'file': open('文件名.xls', 'rb')}
)

PUT 请求

requests.put(url, params=None, **kwargs)

参数

  • url – 请求路径
  • data – (可选) 发起请求所携带的参数
  • json – (可选) 请求中要发送的json数据
  • **kwargs
r = requests.put('https://api.com/put', data={'key': 'value'})

DELETE 请求

requests.delete(url, **kwargs)

参数

  • url – 请求路径
  • **kwargs
r = requests.delete('https://api.com/delete')

HEAD 请求

requests.head(url, **kwargs)

参数

  • url – 请求路径
  • **kwargs
r = requests.head('https://api.com/get')

OPTIONS 请求

requests.options(url, **kwargs)

参数

  • url – 请求路径
  • **kwargs
r = requests.options('https://api.com/get')

可选参数

设置请求头

requests.XXX('url', headers={'key': 'value'})

设置传递的Cookies

requests.XXX('url', cookies={'key': 'value'})

设置等待时间

requests.XXX('url', timeout=1)

设置是否允许重定向

requests.XXX('url', allow_redirects=True)

设置SSL证书路径

requests.XXX('url', verify='/path/to/certfile')

获取响应

r = requests.post(url,data)
# 获取响应URL
r.url
# 获取响应文本
r.text
# 获取响应JSON
r.json()
# 获取响应编码格式
r.encoding
# 获取二进制响应值
r.content

# 获取响应状态码
r.status_code
# 获取响应头
r.headers
# 获取响应的所有Cookies
r.cookies
# 获取响应的单个Cookies
r.cookies['cookie名称']
# 获取响应历史
r.history

Session会话

在你连续发起多个请求时,Session会帮你保留一些参数,例如响应的cookies,而且用Session发起多个请求,底层的TCP连接会被重用,可以节省系统资源,显著提高性能。

使用方法

# 创建Session
s = requests.Session()

# 使用Session发起请求,并把响应存到变量r1中
r1 = s.get('https://httpbin.org/cookies/set/sessioncookie/123456789')

# 使用Session发起第二个请求,并把响应存到变量r2中
r2 = s.get('https://httpbin.org/cookies/set/sessioncookie2/1234567890')

# 打印r1响应的text
print(r1.text)
# 打印r2响应的text
print(r2.text)

# 打印Session保存下来的cookies
print(s.cookies)
# '{"cookies": {"sessioncookie": "123456789", "sessioncookie2":"1234567890"}}'

Session可以修改默认请求头或其它参数

s = requests.Session()
# 设置认证
s.auth = ('用户名', '密码')
# 更新请求头
s.headers.update({'x-test': 'true'})
# 修改SSL证书路径
s.verify = '/path/to/certfile'

s.get('https://httpbin.org/headers', headers={'x-test2': 'true'})

Sessions参数

  • auth

    设置默认认证

  • cert

    设置默认SLL证书

  • close()

    关闭Sessions

  • cookies

    配置cookies

  • get_adapter(url)

    给URL添加适配器

  • get_redirect_target(resp)

    接收一个响应,返回一个重定向URI或空

  • hooks

    事件处理钩子函数

  • max_redirects

    允许的最大重定向数,如果超过限制,抛出TooManyRedirects异常,默认为30

  • merge_environment_settings(url, proxies, stream, verify, cert)

    检查环境并将其设置合并

  • mount(prefix, adapter)

    注册一个连接适配器到一个前缀

  • prepare_request(request)

    构建PreparedRequest并返回

  • proxies

    设置代理,将在每个请求中使用

  • rebuild_auth(prepared_request, response)

    重定向时重建认证

  • rebuild_method(prepared_request, response)

    重定向时修改请求方式

  • rebuild_proxies(prepared_request, proxies)

    重定向时重建代理