python爬虫——模拟登陆(携带cookie)

http/https协议特性:无状态
没有请求到对应页面数据的原因:发起的第二次基于个人主页页面请求的时候,服务器端并不知道该次请求是基于登陆状态下的请求
cookie:用来让服务器端记录客户端的相关状态
 (1)手动处理:通过抓包工具获取cookie值,将该值封装到headers中
(2)自动处理:
        ——cookie值的来源:模拟登陆post请求后,由服务器端创建
   session会话对象:
       ——作用:
          (1)可以进行请求的发送
          (2)如果请求过程中产生了cookie,则该cookie会被自动存储/携带在该seesion对象中
       ——使用:
          (0)创建一个session对象,session=requests.Session()
          (1)使用session对象进行模拟登录post请求数据的发送(cookie就会被存储在session中)
          (2)session对象对个人主页对应的get请求进行发送(携带了cookie)
# 模拟登陆
from lxml import etree
import requests

if __name__ == "__main__":
	session = requests.session()
	headers = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69'
	}
	url = 'http://www.gebiqu.com/login.php'
	parms={
		'LoginForm[username]': '你的账号',
		'LoginForm[password]': '你的密码',
		't_btnlogin':'',
		'action': 'login',
		'jumpreferer': '1'
	}
	# 使用session进行post请求发送
	response = session.post(url=url,data=parms,headers=headers)
	print(response.status_code)
	mybook_url = 'http://m.gebiqu.com/'
	# 使用携带cookie的session进行get请求的发送
	mybook_text = session.get(url=mybook_url,headers=headers).text
	with open('./mybook.html','w',encoding='utf-8') as fp:
		fp.write(mybook_text)
	print('保存成功!')

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值