1 requests高级用法
1.0 自动携带cookie 的session对象
# session对象----》已经模拟登录上了一些网站---》单独把cookie 取出来
-res.cookies 是cookiejar对象,里面有get_dict()方法转换成字典
-转成字典 res.cookies.get_dict()
# 使用session发送请求,cookie自动携带
session=requests.session()
res = session.post('http://www.aa7a.cn/user.php', data=data, headers=header)
res1 = session.get('http://www.aa7a.cn/') #不需要携带cookie了
1.1 响应Response
# Http的响应,就是res对象,所有http响应的东西都在这个对象中
res = requests.get('http://www.aa7a.cn/')
import requests
respone=requests.get('http://www.jianshu.com')
# respone属性
print(respone.text) # 响应体转成字符串,默认utf-8,以后打印出来可能乱码
print(respone.content) # 响应体的bytes格式
print(respone.status_code) # 响应状态码
print(respone.headers) # 响应头
print(respone.cookies) # cookie
print(respone.cookies.get_dict()) # cookie转成字典
print(respone.cookies.items()) # 键值对形式
print(respone.url) # 请求地址
print(respone.history) # 访问一个地址,如果重定向了,requests会自动重定向过去,放着重定向之前的地址,列表
print(respone.encoding) # 网页编码
#关闭:response.close()
from contextlib import closing
with closing(requests.get('xxx',stream=True)) as response:
for line in response.iter_content():
# 一点一点取,用来下载图片视频之类
pass
1.2 下载图片到本地
res = requests.get(
'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fa5ec79fe-843e-4a60-8033-2f73bbda2fa5%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1691571832&t=c20db6d16f943b4f84502ec5434d1067')
print(res.content)
with open('meinv.png','wb') as f:
for line in res.iter_content(chunk_size=1024):
# chunk_size 是指在下载文件时每次读取的字节数
f.write(line)
1.3 编码问题
直接打印res.text字符串形式---》从网络过来是二进制---》转成字符串涉及到编码---》默认以utf-8---〉现在会自动识别网页编码,自动转成对应的
res.encoding='gbk' # 手动指定编码
print(res.text)
1.4 解析json
# 返回的数据可能是html,也可能是json(前后端分离项目返回数据json格式)
data={
'cname': '',
'pid': '',
'keyword': '周浦',
'pageIndex': 1,
'pageSize': 10
}
res = requests.post('http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword',data=data)
# 也可以写成
header = {'Content-Type':'application/x-www-form-urlencoded'}
res = requests.post('http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword',data='cname=&pid=&keyword=%E5%91%A8%E6%B5%A6&pageIndex=1&pageSize=10',headers=header)
print(res.json())
1.5 ssl认证(了解)
# https的请求
# 浏览器访问有证书,代码访问没有证书
res = requests.get('https://cnblogs.com/liuqingzheng/p/16005866.html',verify=False) # verify=False后不验证证书
# 极个别网站必须要验证,需要手动携带证书
import requests
respone=requests.get('https://www.12306.cn',
cert=('/path/server.crt',
'/path/key')) # 本地得有证书,写路径和密钥
print(respone.status_code)
# https和http的区别
# 参考文章
标签:02,get,爬虫,video,https,print,requests,com
From: https://www.cnblogs.com/10086upup/p/17542388.html