一、博客标题1. 爬虫入门实战使用 Requests.Session 实现 Cookie 会话登录抓取小说网站书架数据2. 一文搞懂 HTTP 会话保持Python 模拟登录Cookie 自动管理完整案例3. 从零实战requests 表单登录会话维持爬取登录授权页面小说网站场景4. 解决登录态丢失问题Requests Session 自动携带 Cookie 跨页面请求详解二、博客正文前言在爬虫开发中登录授权页面爬取是最常见的场景。由于 HTTP 协议是无状态协议单次 requests.get/post 请求无法保存登录凭证访问登录后页面会直接被判定为未登录 。本文以某小说网站为例基于 Python requests 库的 Session 会话对象实现表单账号密码登录、自动保存 Cookie、跨页面维持登录态、抓取书架数据全流程实战。同时讲解核心原理、请求头配置、常见报错排查代码可直接运行适合爬虫初学者入门学习。一、技术前置知识1.1 为什么要用 Session 会话原生 requests 每次请求都是独立连接不会自动保存 Cookie登录后再次请求其他页面会丢失身份。requests.Session() 会创建一个持久化会话自动管理 Cookie、请求头、连接池一次登录后同一会话下所有请求自动携带登录凭证完美模拟浏览器连续操作行为。1.2 登录核心流程1. 初始化 Session 会话对象必须在登录前创建。2. 配置请求头 User-Agent 、 Referer 等绕过基础反爬。3. 发送 POST 表单请求提交账号密码完成登录。4. 从会话中提取登录成功后的 Cookie 。5. 使用同一会话发送 GET 请求访问登录专属页面书架。二、环境准备1. 依赖库安装pip install requests2. 运行环境Python 3.7、PyCharm/VS Code 均可。3. 目标站点小说测试站点文中链接仅作学习演示请勿用于非法爬取。三、完整实战代码3.1 完整可运行代码import requests session requests.Session() # -------------------------- # 2. 配置请求头 # -------------------------- headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36, Referer: https://lnzycm.com/user/login.html, Origin: https://lnzycm.com, Content-Type: application/x-www-form-urlencoded, Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8 } login_url https://lnzycm.com/user/login.html login_data { username: auto, password: admin123 } print(正在登录...) login_resp session.post(login_url, datalogin_data, headersheaders, allow_redirectsTrue) print(登录状态码:, login_resp.status_code) print(登录Cookie:, session.cookies.get_dict()) print(\n *50) print(正在获取书架数据...) bookcase_url https://lnzycm.com/user/bookcase.html resp session.get(bookcase_url, headersheaders) print(书架页面状态码:, resp.status_code) print(\n 书架页面完整内容 \n) print(resp.text)3.2 代码逐行详解1. session requests.Session()核心对象整个流程只创建一次。所有登录、后续访问请求都必须使用该对象否则登录态失效。2. 请求头 headers 作用- User-Agent 伪装成浏览器拒绝纯爬虫请求。- Referer/Origin 标识请求来源页面部分网站会校验该字段缺失会登录失败。- Content-Type 声明请求体为表单格式适配账号密码提交。3. session.post() 登录请求账号密码以 data 表单形式提交 allow_redirectsTrue 开启跳转跟随适配登录后自动跳转场景。4. session.cookies.get_dict()从会话中提取服务器返回的登录 Cookie包含 userid 、 username 、身份密钥等身份凭证。5. session.get() 访问书架复用同一个 session 对象自动携带登录 Cookie成功访问需要登录权限的书架页面。四、运行结果说明4.1 正常运行输出 开始模拟登录 登录响应状态码200 登录成功获取Cookie{userid: 51359, username: auto, bookkey: 2f5ca01ec893a2dae08ec1b49d8eb0b6} 访问登录后页面个人书架 书架页面响应状态码200 书架页面源码片段 br / bNotice/b: Undefined variable: pcurl in bD:\wwwroot\zhanqun\lnzycm.com\web\user\bookcase.php/b on line b116/bbr / !DOCTYPE html html head meta http-equivContent-Type contenttext/html; charsetutf-8 title我的书架 - 临时书架 - 浏览记录_饿虎小说网/title ......4.2 结果解读1. 状态码 200 请求正常登录、页面访问均成功。2. 成功获取三组 Cookie 字段 userid 用户ID、 username 用户名、 bookkey 身份密钥证明登录态已保存。3. 页面源码正常返回个人书架页面说明会话保持生效未被拦截为未登录用户。4. 页面中的 Undefined variable 是网站服务端 PHP 代码报错和爬虫代码无关不影响数据获取。五、常见问题 排错方案问题1登录成功但访问书架页面跳转到登录页原因未复用同一个 Session 对象、请求头缺失 Referer/Origin 。解决方案1. 全程只使用一个 session 实例不要多次 requests.Session() 。2. 补齐完整请求头重点保留 Referer 和 User-Agent 。问题2登录状态码 403 / 401 拒绝访问原因请求头伪装不足、表单参数名错误、账号密码错误。解决方案1. 浏览器 F12 抓包核对真实登录请求的 headers 和 data 字段。2. 确认 username/password 参数名和网站表单一致。问题3Cookie 获取为空登录失效原因登录接口地址错误、未开启页面跳转跟随。解决方案1. 抓包确认真实登录 url 部分网站登录接口和登录页面不是同一个地址。2. post 请求添加 allow_redirectsTrue 。问题4多次请求后登录态丢失原因网站 Cookie 有时效性、请求频率过高触发反爬。解决方案1. 定时重新登录刷新 Cookie。2. 添加延时 time.sleep(1~3) 降低请求频率。六、拓展进阶用法6.1 全局统一设置请求头无需每次请求都传入headers给会话全局绑定请求头session requests.Session() # 全局更新请求头该会话下所有请求自动携带 session.headers.update({ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/114.0.0.0 })6.2 上下文管理器写法使用 with 语句代码更规范会话自动释放资源with requests.Session() as session: # 登录逻辑 session.post(login_url, datalogin_form_data, headersheaders) # 访问书架 res session.get(bookcase_url, headersheaders) print(res.text)6.3 手动携带 Cookie 访问若已有登录 Cookie可直接构造 Cookie 字典访问页面cookies { userid: 51359, username: auto, bookkey: 2f5ca01ec893a2dae08ec1b49d8eb0b6 } res requests.get(bookcase_url, headersheaders, cookiescookies)七、总结1. 登录类爬虫首选 requests.Session() 核心优势是自动管理 Cookie、维持会话完美解决 HTTP 无状态问题。​2. 模拟登录三要素正确的登录接口、表单参数、完整请求头三者缺一极易登录失败。​3. 实战核心规则会话对象仅初始化一次跨页面请求必须复用同一会话。​4. 本文案例适用于绝大多数账号密码表单登录网站可迁移至论坛、资讯站、图书站等场景。免责声明本文代码仅用于 Python 爬虫技术学习与研究请遵守目标网站用户协议及国家网络安全法规禁止恶意爬取、批量抓取商业数据。八、文末互动1. 你在模拟登录时遇到过哪些奇葩反爬评论区留言交流。​2. 后续将更新Cookie 持久化保存、验证码登录、小说正文解析等内容欢迎点赞收藏关注三、博客标签Python 爬虫 requests Cookie Session会话 模拟登录 爬虫实战 小说爬虫 网络请求