1、发送请求
# 发送 get 请求
r = requests.get("http://httpbin.org/get")
# 发送 post 请求
r = requests.post("http://httpbin.org/post", data={"key":"value"})
2、请求参数
r = requests.get(url, params=None, **kwargs)
'''
url:url 地址
params:url 中额外的参数(字典或字节流格式,可选)
**kwargs:12个控制访问的参数
'''
3、属性
3.1、常用属性
r.text # 返回 HTTP 响应 url 对应的 html 页面内容(文本)
r.content # 返回 HTTP 响应内容的二进制形式(图片)
r.encoding # 推测 HTTP 头部对响应的编码
r.apparent_encoding # 从内容中分析响应内容的编码方式(备选编码方式)
3.2、其他属性
r = requests.get('http://httpbin.org/get')
print(type(r.status_code), r.status_code) # 获取响应状态码
print(type(r.headers), r.headers) # 获取响应头信息
print(type(r.cookies), r.cookies) # 获取响应头信息(cookies)
print(type(r.url), r.url) # 获取访问的 url
print(type(r.history), r.history) # 获取访问的历史记录
4、异常
requests.ConnectionError # 网络连接异常(如:DNS 查询失败、拒绝连接等)
requests.HTTPError # HTTP 错误异常
requests.URLRequired # URL 缺失异常
requests.TooManyRedirects # 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout # 连接远程服务器超时异常
requests.Timeout # 请求 URL 超时,产生超时异常
5、主要方法解析
r = requests.request(method="GET", url=url, **kwargs)
r = requests.get(url, **kwargs)
r = requests.request(method="POST", url=url, **kwargs)
r = requests.post(url, **kwargs)
其中:**kwargs 为控制访问的参数(均为可选项)
参数 | 说明 | 类型 |
---|---|---|
params | 作为参数增加到 url 中 | 字典、字节序列 |
data | 作为 Request 的内容 | 字典、字节序列、文件对象 |
json | 作为 Request 的内容 | JSON 格式的数据 |
headers | HTTP 定制请求头 | 字典 |
cookie | Request 中的 cookie | 字典、CooKiJar |
auth | 支持 HTTP 认证功能 | 元组 |
files | 传输文件 | 字典 |
timeout | 设定超时时间(单位:秒) | |
proxies | 设定访问代理服务器,可以增加登录认证 | 字典 |
allow_redirects | 重定向开关(True/False,默认为 True) | |
stream | 获取内容立即下载开关(True/False,默认为 True) | |
verity | 认证ssl证书开关(True/False,默认为 True) | |
cert | 本地ssl证书路径 |
6、SSL 证书验证
Requests 可以为 HTTPS 请求验证 SSL 证书,就像 web 浏览器一样。SSL 验证默认是开启的,如果证书验证失败,Requests 会抛出异常 SSLError
为了避免这种情况的发生可以通过 verify=False 这样是可以访问到页面,但是会提示:
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning)
解决方法为:
from requests.packages import urllib3
urllib3.disable_warnings() # 就这一句可以解决
r = requests.get("http://httpbin.org/get", verify=False)