requests模块的学习
使用事前
- pip install requests
发送get,post请求,获取 响应
- response = requests.get(url) #发送get请求,请求url地址对应的响应
- response = reqeusts.post(url,data={请求体的字典}) ##发送post请求
response的方法(响应内容
- response.text
- 该方式往往会出现乱码,出现乱码使用response.encoding=”utf-8”
response.content.decode()
- 把响应的二进制字节流转化为str类型
resposne.request.url #发送请求的url地址 ==字符串
- response.url #response响应的url地址 ==字符串
- response.request.headers #请求头 ==字典
- response.headers #响应请求 ==字典
获取网页源码的正确打开方式(通过下面三种方式一定能够获取到网页的正确解码之后的字符串)
- response.content.decode() (默认 utf-8)
- response.content.decode(“gbk”)
- response.text (网页推测解码格式)
发送带header的请求
- 为了模拟浏览器,获取和浏览器一模一样的内容
1
2
3
4
5headers = {
"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1",
"Referer": "http://fanyi.baidu.com/?aldtype=16047"}
response = requests.get(url,headers=headers)
使用超时参数
- requests.get(url,headers=headers,timeout=3) # 3秒内必须返回响应,否则会报错
修改get请求
retrying模块的学习
- pip install retrying
1
2
3
4
5
6from retrying import retry
def fun1():
print("this is func1")
raise ValueError("this is test error")
处理cookie相关的请求
人人网{“email”:”mr_mao_hacker@163.com“, “password”:”alarmchime”}
直接携带cookie请求url地址
- cookie放在headers中(添加一个
cookie字段
)1
headers= {"User-Agent":"....","Cookie":"cookie 字符串"}
- cookie放在headers中(添加一个
- cookie字典传给cookies(变量)参数
- requests.get(url,cookies=cookie_dict)
- 将浏览器上的cookie 生成一个字典(字典推导式快捷法split”=”[0],”=”[-1] ),再传给requests.get(url, headers= ,cookies= )
先发送post请求,获取cookie,带上cookie请求登录后的页面
先搞清楚发生了什么,我们再去模仿浏览器。
浏览器在第一次请求登陆的时候 对方服务器发送cookie 第二次把这个cookie带上进行后续的请求 —-》session 类
- seesion = requests.session()#session具有的方法和requests一样 实例化session
- session.post(url,data,headers) #服务器设置在本地的cookie会保存在session
- session.get(url) #会带上之前保存在session中的cookie,能够请求成功