Requests是用Python语言编写的基于urllib,采用Apache2 Licensed开源协议的HTTP库。它比urllib库更加方便。是一个简单易用的HTTP库。
安装
pip3 install requests
各种请求方式
get方式(带参数)
# 方式一:
payload = {'key1':'value1','key2':'value2'}
# 注意字典里值为None的键都不会被添加到 URL 的查询字符串里。
r=requests.get("http://httpbin.org/get",params=payload,headers=dict,timeout = 1)
# 方式二:
r=requests.get("http://httpbin.org/get?name=hello&age=12)
post方式
r=requests.get("http://httpbin.org/get",data=payload,headers=dict)
文件上传
files={'file':open('report.xls','rb')}
r=requests.post(url,files=files)
response对象
属性:
response.status_code
response.content #获取二进制数据,返回字节流,通常用在下载图片/视频中。
response.text #响应内容,字符串类型,不需要decode
response.json() #对于返回的json数据,可以调用该方法获得json对象,实际上是执行了json.loads(response.text))
response.cookies #urllib中需要声明cookiejar,handler,opener等
response.url
response.encoding
response.headers
状态码:可以用有含义的值来代替
r=requests.get("http://httpbin.org/get",data=payload,headers=dict)
if r.status_code == requests.codes.ok: #if r.status_code == 200:
print("successfully")
会话维持
前一次访问获得的cookie,被后一次的访问使用。
通过session来完成
import requests
s = requests.Session()
s.get("https://httpbin.org/cookies/set/number/123456") #访问url,获得响应的cookie
response = s.get("https://httpbin.org/cookies")
证书认证
对于https的网站,访问时,首先会对证书进行验证
r = requests.get("https://www.12306.cn") #SSLError,因为12306的证书非官方
可以通过指定verify参数来决定是否进行证书认证
r = requests.get("https://www.12306.cn",verify=False)
#但仍然有警告信息,可以通过以下方法消除
from requests.packages import urllib3
urllib3.disable_warnings()
可以通过指定证书
r = requests.get("https://www.12306.cn",cert=(path))
认证设置
有些网站在访问时需要输入用户名和密码,可以通过auth参数来制定
r = requests.get(url,auth=('user','123')
代理设置
http/https代理
#如果代理有账号密码,可以通过以下方式指定;没有的话,可以去掉
proxies = {
"http":"http://user:password@127.0.0.1:9743"
}
r = requests.get("www.baidu.com",proxies = proxies)
socks代理
pip3 install 'requests[socks]'
proxies = {
"http":"socks5://127.0.0.1:9743"
}
r = requests.get("www.baidu.com",proxies = proxies)