首先使用requests或Selenium模拟登录并维持会话,1.通过Session获取csrf token并提交登录表单,2.对JS渲染页面用Selenium操作浏览器登录并注入cookies,3.后续请求复用同一Session对象访问受保护内容。

抓取需要登录的网站,关键在于模拟登录过程并维持会话状态。Python爬虫通过携带有效的身份凭证(如 cookies 或 token)请求受限页面,从而获取受保护内容。下面介绍常用方法和实现步骤。
使用 requests + BeautifulSoup 模拟登录
大多数登录网站使用表单提交用户名和密码。通过分析登录接口,用 requests 发送 POST 请求,并保存返回的 cookies,后续请求即可携带这些凭证。
基本流程如下:
访问登录页面,获取隐藏字段(如 csrf token)构造登录数据,包含用户名、密码和必要隐藏参数发送 POST 请求到登录接口检查是否登录成功(可通过跳转或响应内容判断)使用同一个 session 对象请求其他受保护页面示例代码:
import requestsfrom bs4 import BeautifulSoupsession = requests.Session()
立即学习“Python免费学习笔记(深入)”;
第一步:获取登录页和 csrf token
login_url = 'https://www.php.cn/link/d9976f1c2c0c972d1cee0c3647cbd194'res = session.get(login_url)soup = BeautifulSoup(res.text, 'html.parser')csrf_token = soup.find('input', {'name': 'csrf'})['value']
第二步:提交登录表单
login_data = {'username': 'your_username','password': 'your_password','csrf': csrf_token}session.post(login_url, data=login_data)
第三步:访问受限页面
protected_page = session.get('https://www.php.cn/link/fad68ee497f1cf9108b630e7ce630e6c')print(protected_page.text)
处理 JavaScript 渲染的登录(使用 Selenium)
有些网站前端由 JavaScript 动态渲染,表单提交通过 Ajax,且登录状态依赖本地存储(如 localStorage)。这种情况下,requests 难以直接模拟。推荐使用 Selenium 驱动真实浏览器操作。
主要优势:
自动执行 JS,加载动态内容支持点击、输入、等待等用户行为可获取登录后生成的 cookies示例代码:
from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get('https://www.php.cn/link/d9976f1c2c0c972d1cee0c3647cbd194')
填写表单并提交
driver.find_element_by_name('username').send_keys('your_username')driver.find_element_by_name('password').send_keys('your_password')driver.find_element_by_tag_name('form').submit()
time.sleep(3) # 等待登录完成
将 cookies 注入 requests session
session = requests.Session()for cookie in driver.get_cookies():session.cookies.set(cookie['name'], cookie['value'])
后续可用 session 抓取内容
res = session.get('https://www.php.cn/link/6499e19d47d7cbd3302a26fdb40d0b41')print(res.text)
driver.quit()
使用 Session 维持登录状态
Python 的 requests.Session() 能自动管理 cookies,是维持登录状态的核心工具。只要在同一个 session 中完成登录和后续请求,服务器就会识别为已认证用户。
注意事项:
确保登录请求与目标页面使用同一 session 实例部分网站会检测 User-Agent,建议设置 headers 模拟浏览器登录失败时检查响应内容,确认是否被重定向或出现验证码
应对反爬机制
登录类网站通常有反爬策略,需适当规避:
添加 headers:设置 User-Agent、Referer 等字段控制请求频率:加入 time.sleep() 避免触发限流处理验证码:手动输入、打码平台或图像识别(如 OCR)定期更新 cookies:长期任务需定时重新登录刷新凭证
基本上就这些。核心是模拟真实用户行为,保持会话连贯性。对于简单表单用 requests 足够,复杂交互推荐 Selenium。只要能稳定登录,抓取受限内容就不成问题。
以上就是Python爬虫如何抓取需要登录的网站_Python爬虫模拟登录后抓取受限内容方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1378457.html
微信扫一扫
支付宝扫一扫