Python requests 库详解get和post
requests 安装:
pip install requests
指定版本安装:pip install requests == 2.22.0
卸载安装:pip uninstall reques
查看安装包:pip list
如果按照超时,使用国内下载源:
pip install --index -url https://pypi.douban.com/simp requests
get请求
我们使用python发送get请求:
improt requests
url = "https://www.baidu.com/"
respone = requests.get(url)
print(respone.josn)
post请求
我们使用python发送post请求:
improt requests
url = "https://www.baidu.com/"
prams = { 'pw':'root',
'wd':'123456'
}
respone = requests.post(url,prams=prams)
print(respone.josn())
post请求ssl问题
https的请求相对于http安全级别高,需要验证SSL证书
import urllib3 # 使用这个方法就OK了urllib3.disable_warnings() # 忽略警告
万能警告忽略
import requests# requests忽略InsecureRequestWarning警告加这2行
# from urllib3 import disable_warnings
# disable_warnings()
# 以后只要遇到警告,加这个忽略,万能的
import warnings
warnings.filterwarnings("ignore")
r = requests.get("https://www.cnblogs.com/yoyoketang/", verify=False)
print(r.status_code)
post请求参数
Post请求参数一部分在url里,另外一部分在body里面
常见的四种:
1.第一种:application/json: {“key1“:”value1”,“keyt2":“value2"}
json=
2.第二种:application/x-www-form-urlencoded:name1= value1&name2=value2
data=
3.第三种:multipart/form-data:这一种是表单格式的
(文件上传 file=,图片上传等混合式)
data=
- Content-Type: octets/stream
(文件下载)
data=
5.text/xml
data=
post之data和json傻傻分不清
respone.josn()和respone.text区别:
improt requests
url = "https://www.baidu.com/"
prams = { 'pw':'root',
'wd':'123456'
'QQ':'中文'#这里requests会自动将中文转成urlencode编码
}
respone = requests.post(url,prams=prams)
print(respone.josn())#这里json解析,返回的是dick
print(respone.text())#返回text文本
返回结果:
1.response的返回内容还有其它更多信息
-- r.status_code # 响应状态码
-- r.content # 字节方式的响应体,会自动为你解码 gzip和deflate 压缩
-- r.headers # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
-- r.json() # Requests中内置的JSON解码器 ,json转成python的字典了
-- r.url # 获取url
-- r.encoding # 编码格式
-- r.cookies # 获取返回的cookie
-- r.text # 字符串方式的响应体,会自动根据响应头部的字符编码进行解码
-- r.raise_for_status() # 失败请求(非200响应)抛出异常
-- r.ok# 返回True / False 状态码在200-400之间 返回True状态码在400-600之间返回 False
-- r.history # 有重定向请求的时候,可以查看重定向记录
-- r.apparent_encoding # 分析响应编码
response返回乱码
improt requests
url = "https://www.baidu.com/"
prams = { 'pw':'root',
'wd':'123456'
'QQ':'中文'#这里requests会自动将中文转成urlencode编码
}
respone = requests.post(url,prams=prams)
print(respone.josn())#这里json解析,返回的是dick
print(respone.text())#返回text文本
print(respone.encoding)
print(respone.apparent_encoding)#获取返回的编码
print(respone.content.decode(respone.apparent_encoding))#decode 是解码