1、文件上传
将文件favicon.ico上传,但favicon.ico必须和脚本在一个目录下。

import requests
files={'file':open('favicon.ico','rb')}
r=requests.post("http://httpbin.org/post",files=files)
print(r.text)

2、Cookies的获取与设置
获取Cookies,首先调用cookies属性即可成功得到Cookies,可以发现它是RequestCookieJar类型,然后用item()方法将其转化为元组组成的列表。

import requests
r=requests.get("http://www.baidu.com")
print(r.cookies)
for key,value in r.cookies.items():
print(key+" = "+value)

输出:

<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
BDORZ = 27315

设置Cookies
在headers里设置Cookies,或者通过cookies参数来设置,不过这样需要构造RequestsCookieJar对象,而且需要分割一下cookies。
3、会话维持
Session对象可以方便地维护一个对话,而且不用担心cookies的问题,它会帮我们自动处理好。用得非常广泛,可以用于模拟在一个浏览器中打开同一个站点的不同页面。
它通常用来模拟登陆成功之后再进行下一步操作。Session在平常

import requests
s=requests.session()
s.get("http://httpbin.org/cookies/set/number/123456789") #设置了一个cookies,名字叫number,内容是123456789
r=s.get("http://httpbin.org/cookies")
print(r.text)

输出:

{
"cookies": {
"number": "123456789"
}
}

4、SSL证书验证
可以使用verify参数控制是否检查,如果不加verify参数,默认是true,会自动验证。

response=requests.get(url,verify=False)

5、代理设置
代理设置需要用到proxies参数

import requests
proxies={
"http":"http://10.10.1.10:3128",
"https":"http://10.10.1.10:1080",
}
requests.get("http://www.taobao.com",proxies=proxies)

直接运行是不行的,因为这个代理是无效的,需要换成有效代理。
若设置需要使用HTTP Basic Auth,可以使用类似http://user:password@host:port这样的语法来设置代理。
6、超时设置
请求分为两个阶段,即连接和读取,timeout是两者的总和,如果要分别指定,就可以传入一个元组

r=requests.get(",timeout=(5,30))

7、身份认证

import requests
from requests.auth import HTTPBasicAuth
r=requests.get(",auth=HTTPBasicAuth("username","password"))
print(r.status_code)

如果认证成功,返回200状态码;如果认证失败,返回401状态码。
或者更简便的写法,直接传入一个元组
这里我用身份认证登录了我的CSDN博客,成功登陆了!

r=requests.get(",auth=("18370582831","xxxxxxx"))
print(r.status_code)

requests还提供了其他认证方式,如OAuth认证。