Result库的高级用法

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)

如果要分别指定超时时间:

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)

猜你喜欢

转载自blog.csdn.net/weixin_43796016/article/details/84840443
今日推荐