【爬虫技能树】㈣、request.session()之应用场景

本文介绍了如何通过request.session()方法保存Cookie,实现在登录后无需重新登录抓取数据的过程。重点讲解了登录表单提交、获取Cookie并应用到后续请求的步骤,以及未携带Cookie请求的对比,突出了Cookie在识别用户身份中的关键作用。
摘要由CSDN通过智能技术生成


有粉丝问到这个方法,不知如何回答,因为市面上的网站几乎都做了风控,如果单靠这种方法实现登录,是很难的,比如说表单中的加密参数,不懂Js连门槛都入不了。我特意在本地搭了一个web,仅供参考!

简介

request.session()这个方法可以保存上次请求时的Cookie,有利于我们在登录场景中,post得到Cookie后,可直接请求网页,无需登录。
Cookie:由服务器产生,浏览器收到请求后保存在本地,当再次访问时,会自动带上Cookie,这样服务器就能通过Cookie来判断用户!

思路

  • 首先Post提交表单数据,将登录信息给到服务器,通过之后拿到登录后的Cookie
  • 利用session保存登录后的Cookie,再请求登录后的Url,拿到我们需要的数据

实现

获取登录后的Cookie

import requests

url = "http://127.0.0.1:8000/login/"  # 登录页

header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
          } # 请求头

session = requests.Session()  # 创建session

postData = {'usm': 'fun',
            'pwd': 'fun',
            }   #  表单数据


res = session.post(url,data=postData,headers=header)
print(res)  # 返回状态码

在这里插入图片描述
登录成功

请求登录后的网页

import requests


url = "http://127.0.0.1:8000/login/"  # 登录页

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
          }

session = requests.Session()  # 创建session

postData = {'usm': 'fun',
            'pwd': 'fun',
            }   #  表单数据

res = session.post(url,data=postData,headers=headers)
print(res)  # 返回状态码


# 请求登录后的页面
response = session.get('http://127.0.0.1:8000/login/next_step/select/', headers=header)
print(response.text)

在这里插入图片描述
这里请求了一个查询页,返回正确的网页源码,可能大家会有所疑问,要是不带上Cookie直接请求会返回什么?为了打消这个疑问,展示:

# 请求登录后的页面
import request
headers = {
		"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
}

response = requests.get('http://127.0.0.1:8000/login/next_step/select/', headers=headers)
print(response.text) #返回网页文本

在这里插入图片描述
很显然,直接请求返回了登录页的源码,告诉我们必须通过登录才能请求,所以Cookie是必不可少的,它是识别用户身份的重要纽带。

最后

点关注不迷路,本文若对你有帮助,烦请三连支持一下 ❤️❤️❤️
各位的支持和认可就是我最大的动力❤️❤️❤️

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值