python 的网络请求库 requests 简单使用
简介
requests 库是 python 中一个最常用的网络请求库,在爬虫时使用甚多。它请求的方式简单,只需简单地调用其内置地 get、post 等方法即可发送请求。本文章从面向对象的角度来介绍其使用方法以及源码解析。
requests 库使用了 restful 风格设计的 api,即 get
,post
,put
,patch
,delete
五种 HTTP 方法,对应了 CRUD
操作。
Requests 请求对象
在 requests 中,这几个 api 入参后会构造一个 Requests 对象:
method
:请求方法,默认get
,可选择的有:get
,post
,put
,patch
,delete
,head
,options
,例如:
python
1 | import requests |
这种写法有些冗余,所以一般不使用 request
方法,而是直接使用 requests.get,requests.post,requests.put,requests.patch,requests.delete,requests.head,requests.options,例如:
python
1 | import requests |
url
:请求地址,必选,例如 https://api.bimg.ccheaders
:请求头,例如:
python
1 | import requests |
files
:文件列表,上传文件,详情params
:请求参数,在get
方法中,可以用?key=value
来作为请求参数,也可使用params={'key':'value}
的形式来请求参数,例如:
python
1 | import requests |
data
:请求参数,在post
等方法中,如果是表单请求(即请求内容是application/x-www-form-urlencoded
),可使用data={'key':'value'}
的形式发送请求参数,例如:
python
1 | import requests |
json
:请求参数,在post
等方法中,如果是发送json
数据(即请求内容是application/json
),可使用json={'key':'value'}
的形式发送请求参数,例如:
python
1 | import requests |
cookies
:cookie,保存服务器的一些数据,发送请求时携带在请求头上,headers={'cookie':'xxxx'}
,或者用以下方法也可携带 cookie:
python
1 | import requests |
auth
:认证,等同于在请求头加上{'Authorization':'xxxxxxxxxxx'}
,不常用hooks
:回调方法
requests.get(url, params=None, **kwargs)
也设置了一些参数来辅助构造 Requests 对象:
timeout
超时时间 (秒),可整数 / 浮点数,如果请求在规定时间内还未响应,则抛出一个 exception,也可传入一个包含两个简单浮点数的元组,用来分别设置请求超时时间和读取超时时间,例如:
python
1 | import requests |
stream
,是否以流的方式传输,默认情况下stream=False
,当请求到服务器资源后,它会立即开始下载文件并存放到内存当中,如果文件过大就会导致内存不足的情况,如果以流的方式传输,则请求会先下载响应头,数据内容还未下载,例如:
python
1 | import requests |
proxies
,设置代理verify
,是否验证请求地址的证书,默认True
cert
,证书,如果是String
类型,表示.pem 文件路径,如果是Tuple
类型,表示('cert', 'key')
Response 响应对象
在 requests 中,这几个 api 的返回值是一个 Response 对象:
status_code
,状态码,例如:
python
1 | import requests |
headers
,响应头,例如:
python
1 | import requests |
url
,请求地址encoding
,编码cookies
,cooike
requests 也设置了一些参数来辅助构造 Response 对象:
text
,返回响应的内容,unicode 类型数据,例如:
python
1 | import requests |
content
,返回响应的内容,以字节为单位,例如:
python
1 | import requests |
json()
,返回响应的 JSON 对象 ,例如:
python
1 | import requests |
ok
,检查 “status_code” 的值,如果小于 400,则返回 True,如果不小于 400,则返回 False,例如:
python
1 | import requests |
源码解析
待完善……
参考文章
https://realpython.com/python-requests/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 枫叶!