##什么是cookie
http请求是无状态的请求协议
不会记住用户的状态和信息
也不清楚你在者这之前的访问过什么
因为网站需要记录用户是否登录时,
就需要在用户登录后创建一些信息
并且要把这些信息记录在当前用户的浏览器中,
记录的内容就是cookie
用户使用当前的这个浏览器继续访问这个服务器时,会主动携带这个网站设置的cookie信息
cookie会在浏览器中记录信息,并且在访问时懈怠这个信息
1。浏览器更换或删除cookie后,信息丢失
2.cookie在浏览器中记录的信息时不安全的,因此不能记录敏感信息
session是在服务器端进行数据的记录
并且在给每个用户生成一个sessionID,
并且把这个sessionID设置在用户的浏览器中,也就是设置为cookie
import requests
#定义请求的url
url = 'https://i.csdn.net/#/uc/profile'
#定义请求头信息
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
'cookie': ''#这里的内容可以根据自己在登陆时查看cookie,然后直接粘贴在这里
}
#发起Get请求
res = requests.get(url=url,headers=headers)
#获取相应状态码,当响应状态码为200 时则表示请求成功
code = res.status_code
print(code)
if code ==200:
with open ('E:/Learn/PythonLearn/demo04_cookie/text.html','w',encoding="utf-8") as fp:
fp.write(res.text)
第二种设置cookie的方法
import requests
# 需要请求的目标地址
url = 'http://www.zmz2019.com/user/user'
# 登录请求的地址
loginurl = 'http://www.zmz2019.com/User/Login/ajaxLogin'
# 请求头
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
# 如果需要爬虫程序主动记录cookie并且携带cookie,那么在使用requests之前先调用session方法
# 并且使用session方法返回的对象发送请求即可
req = requests.session()
# 登录请求时的数据
#data的数据获取如下图
data = {
'account': '',#这里输入自己的账号
'password': '',#这里输入密码
'remember': '1',
'url_back': 'http://www.rrys2019.com/'
}
# 发起登录请求
res = req.post(url=loginurl,headers=headers,data=data)
# 判断状态
code = res.status_code
print(code)
if code == 200:
# 发起新的请求,去获取目标数据
res = req.get(url=url,headers=headers)
with open('rr.html','w',encoding="utf-8") as fp:
fp.write(res.text)
通过登录页面时,右键-》检查-》Network中找到是登录的页面,看到里面是post请求时,找到第二张图的From-data