1.发送get请求
一、环境安装
1.用 pip 安装 requests 模块(在命令行)
pip install requests
二 发送get请求
import requests
# 请求接口
url1 = "https://www.wanandroid.com/"
res = requests.get(url=url1)
# 获取get请求的状态码
print(res.status_code)
# 获取get请求的内容
print(res.content)
# 如果content为乱码时,可以用text
# 得到一个html的文本
print(res.text)
三params
1.再发一个带参数的 get 请求,如玩安卓搜索:Android
地址为:
https://www.wanandroid.com/article/query?k=Android&key=value
Get 接口传参都是在接口路径后面用
?
间隔,比如
https://www.wanandroid.com/article/query
?
k=Android
&
key=value
如果需要传递多个参数,参数之间用
&
连接
1.请求参数:k=Android,可以以字典的形式传参:{"k": " Android "}
3.多个参数格式:{"key1": "value1", "key2": "value2", "key3": "value3"}
import requests
# 获取url
url1 = "https://www.wanandroid.com/"
# 创建参数,以字典的形式
payload = {"k": "Android"}
res = requests.get(url=url1, params=payload)
# 获取get请求的状态码
print(res.status_code)
# 获取get请求的内容
print(res.content)
# 如果content为乱码时,可以用text
# 得到一个html的文本
print(res.text)
方便查看get请求的内容,可以放在一个文件中
# 将生成的html的文件单独写出来
with open("wan.html", "w", encoding="utf8") as f:
f.write(res.text)
四、content
1.百度首页如果用 r.text 会发现获取到的内容有乱码,因为百度首页响应内容是 gzip 压
缩的(非 text 文本)
五、response
1.response 的返回内容还有其它更多信息
--
r.status_code
#响应状态码
-- r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
--
r.headers
#以字典对象存储服务器响应头,但是这个字典比较特殊,字典键 不区分大小写,若键不存在则返回 None
# 查看请求头
print(res.headers)
# 查看请求头中的某一内容
print(res.headers["Content-Type"])
--
r.json()
#Requests 中内置的 JSON 解码器,处理后对应 Python 的 dict
-- r.url # 获取 url
-- r.encoding # 编码格式
-- r.cookies # 获取 response 返回的 cookie
-- r.raw #返回原始响应体
--
r.text
#字符串方式的响应体,会自动根据响应头部的字符编码进行解码
-- r.raise_for_status() #失败请求(非 200 响应)抛出异常
2.发送post请求(json)
1.post 的 body 是 json 类型,有两种方法来传递 json 数据。
第一种:先导入 json 模块,用 dumps 方法转化成 json 格式。
import json # ⭐
import requests
url1 = "http://httpbin.org/post"
payload = {"username": "****", "password": "****"}
# 方法一:json.dumps将字典转换成json⭐
payload = json.dumps(payload)
res = requests.post(url=url1, data=payload)
print(res.status_code)
print(res.text)
第二种:使用 json 参数默认处理成 json 格式进行传递。
import requests
url1 = "http://httpbin.org/post"
payload = {"username": "****", "password": "****"}
# 方法二:将data改成json⭐
res = requests.post(url=url1, json=payload)
print(res.status_code)
print(res.text)
