You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何使用浏览器Cookie爬取需登录站点表格解决403 Forbidden错误

问题根因

你当前代码存在两个核心问题导致触发403权限错误:

  • 你没有完成站点的登录流程,直接访问需要登录的页面,requests.Session 拿到的只是未登录状态的普通Cookie,没有包含身份认证凭证
  • pandas.read_html() 默认会独立发起HTTP请求,不会自动携带你前面用requests拿到的Cookie,相当于无凭证直接访问受限页面
解决步骤

首先你需要从已经登录的浏览器中提取有效身份认证Cookie,再手动带入请求中,具体操作如下:

  1. 从已登录的浏览器中找到站点的身份认证Cookie键值对
  2. 先通过带Cookie的requests请求拿到页面HTML内容,再把内容传给pandas.read_html()解析,避免pandas独立发起无凭证请求
调整后代码
import requests
import pandas as pd

# 替换为你从已登录浏览器中复制的完整身份认证Cookie键值对
auth_cookies = {
    # 示例格式,填入实际Cookie即可
    # "session_id": "你从浏览器拿到的session值",
    # "auth_token": "你从浏览器拿到的token值"
}

# 构造浏览器UA头,避免被反爬策略拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Referer": "https://exames.genera.com.br/"
}

url = 'https://exames.genera.com.br/busca-parentes'
# 携带认证信息发起请求
response = requests.get(url, cookies=auth_cookies, headers=headers)
response.raise_for_status()

# 直接用返回的HTML内容解析表格
df_list = pd.read_html(response.text)
# 页面存在多个表格时调整索引即可,默认取第一个表格
target_df = df_list[0]
print(target_df)

注意:如果站点表格是动态渲染的,初始HTML中没有表格数据,你可以通过浏览器开发者工具的网络面板找到表格对应的后端数据接口,直接调用接口获取JSON数据解析即可,效率远高于解析HTML页面。

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:36:02