1)文件上传
示例:
import requests
files={'file':open(favicon.ico','rb')}
r=requests.post("http://httpbin.org/post",filles=files)
print(r.text)
注意:favicon.ico需要和当前脚本在同一目录下
2)Cookies
获取cookies:
import requests
r=requests.get('https://www.baidu.com')
print(r.cookies)
for key,value in r.cookies.items():
print(key + '=' +value)
使用cookies来维持登陆状态:
import requests
headers={
'Cookie':'BAIDUID=032232C5AFD4FC60EA7ADC5EE0D18E5F:FG=1; BIDUPSID=032232C5AFD4FC60EA7ADC5EE0D18E5F; PSTM=1520942560; BDUSS=X55ZzE3SEtpSTZHbU9lQTRiOXczZHRFcThJVC1JbTBzZTQ2VWRnUkhDdzlXZlphQVFBQUFBJCQAAAAAAAAAAAEAAABDZC0jvbW3-b~JtO~LvL~PtqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3Mzlo9zM5aV; BD_UPN=12314753; delPer=0; BD_CK_SAM=1; PSINO=7; BDRCVFR[ziPFLVEIFVC]=mk3SLVN4HKm; BD_HOME=1; MCITY=-%3A; BDRCVFR[S4-dAuiWMmn]=nsMS29EMJ30fjT3njfsnHmsg1D4gLKM; H_PS_PSSID=1436_21112_26350_22157; H_PS_645EC=9c6cJhDgCHim2AO2R7QksVAOzYGYnu7tDmvNE%2Bbm%2Bu9fxIKm3r6RsOMDmHCh47VTHA; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598',
'Host':'www.baidu.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
}
r=requests.get('https://www.baidu.com',headers=headers)
print(r.text)
或者通过cookies参数来设置:
import requests
cookies='BAIDUID=032232C5AFD4FC60EA7ADC5EE0D18E5F:FG=1; BIDUPSID=032232C5AFD4FC60EA7ADC5EE0D18E5F; PSTM=1520942560; BDUSS=X55ZzE3SEtpSTZHbU9lQTRiOXczZHRFcThJVC1JbTBzZTQ2VWRnUkhDdzlXZlphQVFBQUFBJCQAAAAAAAAAAAEAAABDZC0jvbW3-b~JtO~LvL~PtqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3Mzlo9zM5aV; BD_UPN=12314753; delPer=0; BD_CK_SAM=1; PSINO=7; BDRCVFR[ziPFLVEIFVC]=mk3SLVN4HKm; BD_HOME=1; MCITY=-%3A; BDRCVFR[S4-dAuiWMmn]=nsMS29EMJ30fjT3njfsnHmsg1D4gLKM; H_PS_645EC=9c6cJhDgCHim2AO2R7QksVAOzYGYnu7tDmvNE%2Bbm%2Bu9fxIKm3r6RsOMDmHCh47VTHA; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=1436_21112_22157'
jar=requests.cookies.RequestsCookieJar()
headers={
'Host':'www.baidu.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
}
for cookie in cookies.split('t'):
key,value=cookie.split('=',1)
jia.set(key,value)
r=requests.get('https://www.zhihu.com',cookies=jar,headers=headers)
print(r.text)
3)会话维持
利用Session对象维持同一会话:
import requests
s=requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
r=s.get('http://httpbin.org/cookies')
print(r.text)
4)SSL证书验证
r=requests('xxxxxx',verify=False)
利用verify=False这样可以忽略网站需要SSL证书验证的问题,但还是会有风险提示,可以设置以下代码来完全忽略
import requests
from requests.packages import urllib3
urllib3.disable_warnings()
response=resquests.get('https:www.12306.cn/',verify=False)
print(response.status_code)
5)代理设置
使用proxies参数来设置代理
import requests
proxies={
"http":"xxxxx",
"https":"xxxx",
}
resquests.get("https://www.taobao.com",proxies=proxies)
etc
6)超时设置
使用timeout来设置超时时间
import requests
r=requests.get('https://www.taobao.com',timeout=1)
print(r.status_code)
如果要分别指定超时时间:
扫描二维码关注公众号,回复:
5393596 查看本文章
r=requests.get('https://www.taobao.com',timeout=(5,30)
分别对应连接和读取时间
使用超时设置的好处在于,如果服务器在运行,但是响应特别慢,没有进行超时设置的话,那等待的时间会很久,且没有反应。
7)身份验证
使用requests自带的身份验证:
import requests
r=requests.get('http://localhost:5000',auth=('username','password'))
print(r.status_code)
8)Prepared Request
from requests import Request,Session
url='http://httpbin.org/post'
data={
'name':'germery'
}
headers={
'User-Agent':'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
}
s=Session()
req=Request('POST',url,data=data,headers=headers)
prepped=s.prepare_requests(req)
r=s.send(prepped)
print(r.text)