requests用于仿照客户端向服务器发送请求,并对响应进行处理的第三方库。
1 安装
pip install requests
2 使用
import requests
re=requests.get('http://www.baidu.com')
print(re.status_code)
re.encoding='utf-8'
print(re.text)
3 解析
-
requests.get(url,headers=headers,timeout)
- 向url服务器发出get请求,并返回响应response对象
-
requests.post(url,data=data,headers=headers,timeout)
- 向url服务器发出post请求,并返回响应response对象
- data是请求体的字典
-
response对象
- 属性
- status_code
- text
- url响应的url
- request.url发送请求的url
- headers响应头
- request.headers请求头
- encoding 主编码(浏览器根据HTTP响应头猜测服务器的编码,若头中无charset则认为是ISO-8859-1)
- apparent_coding 备择编码(从响应内容分析编码)
- content二进制内容,通过调用decode()即可转为str类型,decode时可以指定编码方式
- 属性
-
获取响应内容的两种方式
- response.text
- response.content().decode()
-
带有header设置的请求
- headers参数
- user-agent
- referer
- cookie
- origin
-
超时参数
- timeout 达到超时参数时会报错
- 这时可以引入第三方模块retrying
-
cookie参数
- 可以先发送post请求,获取cookie,将登录过后的cookie参数写入,即可模拟登录后的操作
- 作为headers的键
- 作为get/post的参数
- 要求传值为字典方式:cookie=cookie_dict
-
session
-
开启会话,保持登录
-
session=requests.Session() 此时session和requests具有同样的方法
-
服务器设置在本地的cookie会保存在session中
session=requests.Session() session.post(url,data,headers) session.get(url)
-
使用这种方式模拟浏览器登录
import requests def login(): url="http://app01.cast.org.cn:7001/cast/member/loginHandle.jsp" session=requests.Session() data={ "mUser":"username", "mPsw":"password", "usrType":"1" } header={ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" } session.post(url,data=data,headers=header) req_url="http://app01.cast.org.cn:7001/cast/member/selfInfo/ins.jsp" res=session.get(req_url,headers=header) with open("infor.html",'w') as f: f.write(res.text) print(len(res.text)) login()
-
Notice
应博友的要求,创建了一个QQ群,方便大家学习交流,群内也会经常分享一下学习资源。有兴趣的小伙伴可以加群哦!