01.Requests库学习

来源:互联网 发布:微山湖武工队知乎 编辑:程序博客网 时间:2024/06/03 20:42

Requests库学习

Requests介绍

requests库是一个Python的HTTP库,可以进行丰富的Http操作。

Requests安装

pip install requests

常用方法介绍

requests.request(method, url, **args)构造一个请求,是requests其他库的基础方法,其他请求方法都是在request方法之上构造的。

method 参数包含GET、 POST、 HEAD、 PUT、 PATCH、 DELETE
url 参数是URL
args是请求的配置参数包含如下:

params参数拼接到GET请求的url后的参数 格式使用dict类型

payload = {'key1': 'value1', 'key2': ['value2', 'value3']}r = requests.request('GET','http://httpbin.org/get', params=payload)print(r.url)'''http://httpbin.org/get?key1=value1&key2=value2&key2=value3'''

headers 请求头信息,dict类型

url = 'https://api.github.com/some/endpoint'headers = {'user-agent': 'my-app/0.0.1'}r = requests.request('GET',url, headers=headers)

data配合POST请求,data传递请求体参数

payload = {'key1': 'value1', 'key2': 'value2'}r = requests.post("http://httpbin.org/post", data=payload)

json参数,配合POST请求发送请求体,会转换成JSON格式数据

url = 'https://api.github.com/some/endpoint'payload = {'some': 'data'}r = requests.post(url, json=payload)

files参数,上传文件

url = 'http://httpbin.org/post'files = {'file': open('report.xls', 'rb')}r = requests.post(url, files=files)

cookies参数,设置请求cookies

url = 'http://httpbin.org/cookies'cookies = dict(cookies_are='working')r = requests.get(url, cookies=cookies)

allow_redirects参数, 是否开启重定向

r = requests.get('http://github.com', allow_redirects=False)#不允许重定向

timeout参数,设置超时时间,timeout 仅对连接过程有效

requests.get('http://github.com', timeout=0.001)

proxies设置代理

pxs = {'http':'http://user:pass@xxx',        'https':'xxxxx'}r = requests.request("GET",url, proxies=pxs)

auth : 元组,支持HTTP认证功能
stream: True/False,默认为True,获取内容立即下载开关
verify : True/False,默认为True,认证SSL证书开关
cert: 本地SSL证书路径

requests.get(url, params=None,**args)

get函数就是对request的在封装,进行get请求

def get(url, params=None, **args):    requests.request("GET", url, params, **args)

requests.post(url, data=None,**args)

post函数也是对request封装,进行post请求

requests.head(…)

获取头部信息

requests.put(…)

put请求

requests.patch(…)

提交局部修改,节省流量

requests.delete(…)

delete请求

Response对象介绍

上述请求方法返回值都是Response对象

r = requests.get("http://www.baidu.com")type(r)'''<class 'requests.models.Response'>'''dir(r)'''['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', 'apparent_encoding', 'close', 'connection', 'content', 'cookies', 'elapsed', 'encoding', 'headers', 'history', 'iter_content', 'iter_lines', 'json', 'links', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']'''

着重介绍如下Response属性:
url:访问的URL
status_code:状态码
reason:返回结果,状态码后边的值 HTTP/1.1 200 OK
encoding: charset字段的值,默认IOS-8859-1
apparent_encoding:从内容分析到的编码,可以辅助encoding:字段
cookies:cookies
headers:响应头
history:重定向跳转过的地址
text:响应体字符串表示
content:响应体二进制表示
request:request对象
iter_lines:成员函数,返回生成器对象,可以按行迭代内容。
raise_for_status:如果请求返回失败会抛出异常,如果发送了一个错误请求(一个 4XX 客户端错误,或者 5XX 服务器错误响应),我们可以通过 Response.raise_for_status() 来抛出异常

bad_r = requests.get('http://httpbin.org/status/404')print(bad_r.status_code)'''404'''bad_r.raise_for_status()'''Traceback (most recent call last):  File "requests/models.py", line 832, in raise_for_status    raise http_errorrequests.exceptions.HTTPError: 404 Client Error'''

参考文档Requests官方文档 地址:
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

0 0
原创粉丝点击