requests模块的基本使用
requests的基本使用
"""
# 1、request模块的基本使用
import requests
### 发送HTTP请求
# get,post等请求其实本质就是调用request函数
ret = requests.get('https://www.cnblogs.com')
print(ret.status_code) # 响应状态码
print(ret.text) # 响应体,转成了字符串
print(ret.content) # 响应体,二进制
ret1 = requests.post()
# 2、get请求带参数的写法
# 方式一
ret = requests.get('http://127.0.0.1:8000/?name=alen',
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
})
# 放式二(推荐使用,因为中文会自动转码)
ret = requests.get('http://127.0.0.1:8000/',params={'name': 'alen', 'age':18})
print(ret.text)
# 3、带headers
ret = requests.get('http://127.0.0.1:8000/?name=alen',
headers={
# 标识:什么浏览器发送的信息,请求头相关的东西都在META中获取
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
# 上一个页面的地址,作用图片防盗链
'Referer': 'xxx'
})
print(ret)
# 图片防盗链:如果图片的referer不是自己的网站就直接禁止掉
# 4、带cookie,随机字符串(用户信息,也代表session),这里不管后台用的token还是session认证,这里统一都叫cookie
# 第一种方式
ret = requests.get('http://127.0.0.1:8000/?name=alen',
headers={
'cookie': 'key=value;key2=value',
})
# 第二种方式
ret = requests.get('http://127.0.0.1:8000/?name=alen',
cookies={"alen": "trust yourself"})
print(ret)
# 5、发送post请求(注册,登录)携带数据(body)
# 注意:如果你用的是data默认请求体中用的是urlencoded编码
ret = requests.post('http://127.0.0.1:8000/', data={'name':'alen','age':18})
import json
data = json.dumps({'name':'alen', 'age': 18})
# 注意:json是json编码,要想获取只能在body这中拿
ret = requests.post('http://127.0.0.1:8000/', json=data)
print(ret)
# 注意:编码格式是请求头中带的,所以我们可以手动修改,在headers中修改
# 6、session对象
session = requests.session()
# 跟requests.get/post用起来完全一样,但是它帮我们处理了cookie
# 假设是一个登陆,并且成功
session.post()
# 再向该网站发送请求,就是登陆状态,不需要手动携带cookie
session.get('地址')
# 7 响应对象
print(respone.text) # 响应体转成str
print(respone.content) # 响应体二进制(图片,视频)
print(respone.status_code) # 响应状态码
print(respone.headers) # 响应头
print(respone.cookies) # 服务端返回的cookie
print(respone.cookies.get_dict()) # 转成字典
print(respone.cookies.items())
print(respone.url) # 当次请求的地址
print(respone.history) # 如果有重定向,会放到一个列表中
ret=requests.post('http://127.0.0.1:8000/')
ret=requests.get('http://127.0.0.1:8000/admin')
#不要误解
ret=requests.get('http://127.0.0.1:8000/user')
print(ret.history)
print(respone.encoding) # 编码方式
#response.iter_content() # 视频,图片迭代取值
with open("a.mp4",'wb') as f:
for line in response.iter_content():
f.write(line)
# 8 乱码问题
# 加载回来的页面,打印出来,乱码(我们用的是utf8编码),如果网站用gbk,
ret.encoding='gbk'
ret=requests.get('http://127.0.0.1:8000/')
# ret.apparent_encoding #当前页面的编码
ret.encoding=ret.apparent_encoding
# 9、解析json
# 返回数据有可能是json格式,也有可能是HTML格式
ret = requests.get('http://127.0.0.1:8000/')
print(type(ret.text)) #<class 'str'>
print(ret.text) # {"name": "alen", "age": 18}
a = ret.json() # 帮我们转成json格式,也就是我们传过来的json字典
print(a) # {'name': 'alen', 'age': 18}
print(type(a)) # <class 'dict'>
# 10 使用代理
# 正向代理
# django如何拿到客户端ip地址 META.get("REMOTE_ADDR")
# 如何去获取代理,如何使用(用自己项目验收)
# 使用代理有什么用
# ret=requests.get('http://127.0.0.1:8000/', proxies={'http':'地址'})
ret=requests.get('http://127.0.0.1:8000/')
print(type(ret.text))
print(ret.text)
# 11 异常处理
# 用try except捕获一下 就用它就型了:Exception
# 12 上传文件(爬虫用的比较少,后台写服务,)
file={'myfile':open("1.txt", 'rb')}
ret=requests.post('http://127.0.0.1:8000/', files=file)
print(ret.content)
"""
Only you can control your future
You're not alone. You still have family,peopel who care for you and want to save you.