request库之所以强大,是因为他除了基础访问外,就可以上传文件,设置cookies,设置代理等。
1.上传文件
上传文件非常简单,这里上传在上一个文章里下载的文件。一般上传文件都用的post请求。
import requests
file = {'file':open('bnaiduico.ico','rb')}
r = requests.post('http://httpbin.org/post',files=file)
print(r.text)
2.cookies
requests的cookies处理比urllib简单多
import requests
r = requests.get('https://www.baidu.com')
print(r.cookies)
for k,v in r.cookies.items():
print(k,'=',v)
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
BDORZ = 27315
这里我们首先调用cookies属性即可成功得到Cookies,是RequestCookieJar类型对象。然后用items()方法将其转化为元组组成的列表, 遍历输出每一个Cookie的名称和值。
我们的最终目的是直接用Cookie来维持登录状态,下面以知乎为例来说明。
这里使用自己的账号密码登入知乎,然后到开发者工具里依次找到Network-Headers-Request Headers-cookie,复制下来使用。
import requests
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36',
'Cookie':'_zap=6e74d956-70db-4916-996a-983b85b57a92; d_c0="AEAq0h6qhQ-PTn-ul65-fCXM01EBhzMWIgc=|1559448112"; _xsrf=oCHrqBnaGYuJxFcIJROf2UsezPD6SmKW; __utmz=51854390.1572965936.1.1.utmcsr=zhihu.com|utm