四线城市网站建设方向及营利点,网络营销推广培训机构,哪里帮做企业网站,互联网软件开发是什么Python 第二阶段 - 爬虫入门
#x1f3af; 今日目标
学习什么是 Cookie / Session#xff0c;为什么要维持登录状态掌握 requests.Session 用法模拟登录一个带登录表单的网站获取登录后的页面内容
#x1f4d8; 学习内容详解
#x1f510; 什么是 Session#xff1f; …Python 第二阶段 - 爬虫入门 今日目标
学习什么是 Cookie / Session为什么要维持登录状态掌握 requests.Session 用法模拟登录一个带登录表单的网站获取登录后的页面内容 学习内容详解 什么是 Session
很多网站内容需要登录后才能访问。登录后服务器会发给浏览器一个 SessionID或 Cookie作为用户身份凭证。
如果你想爬取登录后的页面就必须“模拟登录”并“保持会话”。 requests.Session 的作用
使用 requests.Session() 可以
自动保存 Cookie在多个请求之间维持登录状态 示例模拟登录测试网站
我们使用 httpbin.org 模拟登录行为演示形式
import requests# 创建一个 session 对象
session requests.Session()# 构造表单数据假设是登录表单
login_data {username: testuser,password: testpass
}# 模拟登录请求
login_url https://httpbin.org/post
response session.post(login_url, datalogin_data)print(登录响应内容)
print(response.json()) # httpbin 会返回你提交的内容# 接着访问其他页面此时自动带上了登录 Cookie
another_response session.get(https://httpbin.org/cookies)
print(\n带 Cookie 的请求结果)
print(another_response.text)模拟实际登录网站仅测试用途
有些网站登录逻辑如下
表单地址https://example.com/login提交字段usernamexxxpasswordxxxcsrf_tokenxxx需要使用 headers 模拟浏览器可能还需要验证码此类需用 Selenium 今日练习任务 使用 requests.Session() 模拟一个简单的表单提交如 httpbin.org 或本地测试站点 import requests# 创建 Session 对象自动保存 cookie
session requests.Session()# 模拟登录表单数据
login_data {username: testuser,password: 123456
}# 表单提交地址httpbin.org 用于测试会返回你提交的所有数据
login_url https://httpbin.org/post# 发送 POST 请求
response session.post(login_url, datalogin_data)# 查看服务器返回的 JSON 数据
print(✅ 登录请求返回内容)
print(response.json())# 模拟登录成功后再访问一个页面httpbin 会带上 cookie
response2 session.get(https://httpbin.org/cookies)
print(\n 后续请求中的 Cookie 内容)
print(response2.text)示例输出: ✅ 登录请求返回内容
{args: {}, data: , files: {}, form: {password: 123456, username: testuser}, headers: {Accept: */*, Accept-Encoding: gzip, deflate, Content-Length: 33, Content-Type: application/x-www-form-urlencoded, Host: httpbin.org, User-Agent: python-requests/2.31.0, X-Amzn-Trace-Id: Root1-684ec172-7f38f51b3f47f06628fc18c7}, json: None, origin: 84.17.38.140, url: https://httpbin.org/post} 后续请求中的 Cookie 内容
{cookies: {}
}观察响应中的 cookie、form、headers 内容 尝试爬取一个你感兴趣的登录后页面如 CSDN 博客后台、知乎收藏等——可能需要 cookie 手动导入 打开浏览器访问 https://www.zhihu.com手动登录你的知乎账户打开开发者工具F12→ Network → 找任意请求查看 Request Headers复制 Cookie 字符串很长那一串requests 模拟登录后的请求import requests# 将你的 Cookie 字符串复制到这里注意格式
cookie_str d_c0xxxx; q_c1xxxx; z_c02|1:xxxx;# 转换为 dict你也可以用 browser_cookie3 库自动导入
cookies {}
for item in cookie_str.split(;):key, value item.strip().split(, 1)cookies[key] value# 请求登录后才能访问的页面例如知乎首页
url https://www.zhihu.com/headers {User-Agent: Mozilla/5.0,Referer: https://www.zhihu.com/,
}response requests.get(url, headersheaders, cookiescookies)# 打印网页前 500 字符确认是否登录成功
print(response.text[:500])今日总结
学会了 Session 的基本概念掌握了 requests.Session() 如何模拟登录并抓取数据为更复杂的登录机制验证码、JS登录做准备