python模块篇02-requests

  1 Requests 是用python语言编写的第三方库,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,完全满足 HTTP 测试需求,多用于接口测试
  2 参考篇:https://www.jianshu.com/p/d78982126318
  3 
  4 首先,安装第三方库
  5 pip install requests
  6 
  7 其次,使用requests
  8 import requests
  9 
 10 
 11 --------------------------------------------------------------------------------
 12 Request库的一些常用方法
 13 1.requests.request(method,url,**kwargs)  构造并发送一个Request对象,返回一个Response对象,支撑各方法的基础方法
 15     method:新建Request对象要使用的HTTP方法,包括:GET,POST,PUT,DELETE等
 16     url:新建Request对象的URL链接
 17     **kwargs:13个控制访问的可选参数
 18 (1)params:字典或字节序列,作为参数增加到url中
 19     paramsValue={'key1':'value1','key2':'value2'}
 20     r=requests.request('GET','http://www.baidu.com',params=paramsValue)
 21     print(r.url)
 22         #执行结果:http://www.baidu.com/?key1=value1&key2=value2;若paramsValue为字符串,结果相仿
 23 
 24 
 25 (2)data:字典、字节序列,文件,作为Request对象body的内容
 26   #字典
 27     dataDicValue={'key1':'value1','key2':'value2'}
 28     r=requests.request('GET','http://www.baidu.com',data=dataDicValue)
 29 
 30   #字节序列
 31     dataStrValue='test'
 32     r=requests.request('GET','http://www.baidu.com',data=dataStrValue)
 33 
 34   #文件
 35     dataFileValue={'file':open('test.csv','rb')}
 36     r=requests.request('POST','http://www.baidu.com',data=dataFileValue)
 37 
 38 (3)json:JSON格式的数据,作为Request对象body的内容
 39     jsonValue={'key1':'value1','key2':'value2'}
 40     r=requests.request('POST','http://www.baidu.com',json=jsonValue)
 41 
 42 
 43 (4)headers:字典格式,HTTP请求头,作为Request对象Header的内容
 44     headerValue={'user-agent': 'Chrome/10'}
 45     r=requests.request('POST','http://www.baidu.com',headers=headerValue)
 46     print(r.headers)
 47   #{'Accept-Ranges': 'bytes', 'Cache-Control': 'max-age=86400', 'Connection': 'Keep-Alive', 'Content-Encoding': 'gzip', 'Content-Length': '4867', 'Content-Type': 'text/html', 'Date': 'Wed, 15 Aug 2018 10:22:42 GMT', 'Etag': '"3dcd-560eb5cea6700"', 'Expires': 'Thu, 16 Aug 2018 10:22:42 GMT', 'Last-Modified': 'Fri, 22 Dec 2017 10:34:36 GMT', 'P3p': 'CP=" OTI DSP COR IVA OUR IND COM "', 'Server': 'Apache', 'Set-Cookie': 'BAIDUID=6AE11C63536CF472F9B403B1BE467161:FG=1; expires=Thu, 15-Aug-19 10:22:42 GMT; max-age=31536000; path=/; domain=.baidu.com; version=1', 'Vary': 'Accept-Encoding,User-Agent'}
 48 
 49 
 50 (5)cookies:字典或CookieJar,Request中的cookie
 51   #字典
 52     cookieDicValue={'key1':'value1','key2':'value2'}
 53     r=requests.request('POST','http://www.baidu.com',cookies=cookieDicValue)
 54     print(r.cookies)
 55 
 56   #<RequestsCookieJar[]>
 57   #CookieJar
 58     cookiesJarValue=cookiejar.CookieJar()
 59     r=requests.request('POST','http://www.baidu.com',cookies=cookiesJarValue)
 60     print(r.cookies)
 61 
 62   #<RequestsCookieJar[]>
 63         
 64 (6)files:字典,形式为{filename: fileobject},表示要上传的多个部分
 65     filesValue = {'file': open('test.csv', 'rb')}
 66     r = requests.request('POST', 'http://www.baidu.com', files=filesValue)
 67 
 68 
 69 (7)auth:Auth 句柄或 (user, pass) 元组
 70   #Auth
 71     authBasicValue=HTTPBasicAuth('username','password')
 72     r = requests.request('POST', 'http://www.baidu.com', auth=authBasicValue)
 73   #(user,pass)元组
 74     authTupValue=('username','password')
 75     r=requests.request('POST','http://www.baidu.com',auth=authTupValue)
 76 
 77 
 78 (8)timeout:等待服务器数据的超时限制,是一个浮点数,或是一个(connect timeout, read timeout) 元组
 79   #浮点数(单位秒)
 80     timeoutFloatValue=12
 81     r=requests.request('POST','http://www.baidu.com',timeout=timeoutFloatValue)
 82 
 83   #(connect timeout, read timeout) 元组;
 84   #connect timeout:建立连接所用的时间;适用于网络状况正常的情况下,两端所用的时间
 85   #readtimeout:建立连接后从服务器读取到可用资源所用的时间;正常情况下,当我们发出请求时可以收到请求的结果,也就是页面上展示的内容,但是当网络状况很差的时候,就会出现页面上无法展示出内容的情况。另外当我们使用爬虫或者其他全自动的程序时,无法判断当前的网络状况是否良好,此时就有了ReadTimeout的用武之地了,通过设置ReadTimeout参数
 86   #注意:在我们使用需要设置这两项参数的服务或程序时,应该对两项参数一起设置。 一般而言两项参数的数值可以设置成一样的,但可以把ReadTimeout设置的长一点,ConnectTimeout可以相对比较短,这是源于我们的网络状况一般较为稳定,连接时很少出现问题,但是读取时因为数据下载时的网络波动,出状况的可能性更大一些timeoutTupValue=(10,25)
 87     r=requests.request('POST','http://www.baidu.com',timeout=timeoutTupValue)
 88 
 89 
 90 (9)allow_redirects:True/False,默认为Ture,重定向开关,为True时表示允许POST/PUT/DELETE方法重定向
 91   #禁止重定向
 92     r=requests.request('POST','http://www.baidu.com',allow_redirects=False)
 93 
 94 
 95 (10)proxies:字典类型,用于将协议映射为代理的URL
 96   #以下是根据不同协议选择不同代理,也可以使用list+随机方式使用多个代理地址访问URL
 97     poxiesValue={'http':'xxx.xxx.xxx.xxx:xx','https':'xxx.xxx.xxx.xxx:xx'}
 98     r=requests.request('POST','http://www.baidu.com',poxies=poxiesValue)
 99     例如:requests代理:
100       proxies=dict(https="http://127.0.0.1:8888"), verify=False    通过charles抓取请求
101 
102 
103 (11)verify:True/False,默认为True,认证SSL证书开关;为True时会验证SSL证书,也可以使用cert参数提供一个CA_BUNDLE路径;为False时,忽略SSL验证
104   #忽略SSL验证
105     r=requests.request('POST','http://www.baidu.com',varify=False)
106 
107 
108 (12)stream:True/False,默认为True,获取body立即下载开关,为False会立即下载响应头和响应体;为True时会先下载响应头,当Reponse调用content方法时才下载响应体
109   # stream为True时下载步骤
110   #stream设置为True,直接下载响应头
111     r=requests.request('POST','http://www.baidu.com',stream=True)
112   #调用content方法下载响应体
113     r.content
114 
115 
116 (13)cert:为字符串时应是 SSL 客户端证书文件的路径(.pem格式,文件路径包含密钥和证书),如果是元组,就应该是一个(‘cert’, ‘key’) 二元值对
117   #文件路径
118     requests.request('POST','http://www.baidu.com',cert='/True_path/server.pem')
119   #元组
120     certTupValue=('/value/value.cert','/value/key')
121     requests.request('POST','http://www.baidu.com',cert=certTupValue)
122 
123 
124 2.requests.get(url, params=None, **kwargs)  请求获取URL位置的资源
126   url:新建Request对象的URL链接
127   params:字典或字节序列,作为参数增加到url中
128   **kwargs:12个控制访问的可选参数(除params外其他同1)
129 
130 3.requests.head(url, **kwargs)  请求获取URL位置资源的响应消息报告,即获得该资源的响应的头部信息
132   url:新建Request对象的URL链接
133   **kwargs:13个控制访问的参数(同1)
134 
135 4.requests.post(url, data=None, json=None, **kwargs)  请求向URL位置的资源后附加新的数据
137   url:新建Request对象的URL链接
138   data:字典、字节序列,文件,作为Request对象body的内容
139   json:JSON格式的数据,作为Request对象body的内容
140   **kwargs:11个控制访问参数(除data,json外其他同1)
141 
142 5.requests.put(url, data=None, **kwargs)  请求向URL位置存储的一个资源,覆盖原URL位置的资源
144   url:新建Request对象的URL链接
145   data:字典、字节序列,文件,作为Request对象body的内容
146   **kwargs:12个控制访问参数(除data外其他同1)
147 
148 6.requests.patch(url, data=None, **kwargs)  请求局部更新URL位置的资源,即改变该处资源的部分内容
150   url:新建Request对象的URL链接
151   data:字典、字节序列,文件,作为Request对象body的内容
152   **kwargs:12个控制访问参数(除data外其他同1)
153 
154 7.requests.delete(url, **kwargs)  请求删除URL位置存储的资源
156   url:新建Request对象的URL链接
157   **kwargs:13个控制访问参数(同1)
posted @ 2020-01-09 10:56  为你编程  阅读(195)  评论(0)    收藏  举报