Requests 高级用法

2018-06-13  本文已影响262人  北游_

1. 文件上传

使用 post 请求提交数据

import requests
# 文件上传 post请求
file = {'file': open('./uploadfile.png', 'rb')}
print("开始请求")
res = requests.post('http://httpbin.org/post', files=file)
res = res.text
print(res)

2.Cookies

3.会话保持

使用Session对象,维护会话。

import requests
# 会话保持:不使用每次都传入cookie的方式
# 设置cookie
requests.get('http://httpbin.org/cookies/set/number/123456789')
# 获取网站cookie
res = requests.get('http://httpbin.org/cookies')
print(res.text)

## 上面的请求会话状态是不保存的(只是为了对比),下面的是正确用法 

# 设置 Session 对象, 作用是维持同一个会话
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
res = s.get('http://httpbin.org/cookies')
print(res.text)

4. SSL证书验证

import requests
# # SSL证书验证
# 请求时带入 verify 关键字,值为False。表示不验证证书
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)

# 不过上面的请求会有如下警告,建议指定证书
# InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warningsInsecureRequestWarning)

对于上述警告解决方法:

5. 代理设置

import requests

proxies = {
    'http': 'http://1.12.32.1:2123',
    'https': 'http:/1.12.32.1:2123'
}

response = requests.get('http://www.baidu.com/s?wd="ip"', proxies=proxies)
print(response.text)

6. requests.codes.ok

根据请求的响应码,执行响应的代码块

import requests

# 请求失败地址
res = requests.get('https://www.jianshu.com/u/31dsdfb6d')
# 请求成功地址
# res = requests.get('http://www.baidu.com')

if res.status_code == requests.codes.ok:
    print('请求成功')
    # 执行代码块
else:
    print('请求失败')
    # 执行代码块

7.超时设置

因网络问题,可能导致某些请求会一直等待下去。故需要设置超时

timeout 参数值有两种型式:

#如果你制订了一个单一的值作为 timeout,如下所示:

r = requests.get('https://github.com', timeout=5)
#这一 timeout 值将会用作 connect 和 read 二者的 timeout。如果要分别制定,就传入一个元组:

r = requests.get('https://github.com', timeout=(3.05, 27))
#如果远端服务器很慢,你可以让 Request 永远等待,传入一个 None 作为 timeout 值,然后就冲咖啡去吧。

r = requests.get('https://github.com', timeout=None)

官方文档:http://docs.python-requests.org/zh_CN/latest/

上一篇下一篇

猜你喜欢

热点阅读