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

使用rvest爬取需登录网站遇HTTP 404错误,求解决方案

登录URL 404问题及替代弃用request_POST的解决方案

1. 定位真实的登录提交端点

你用的https://leghe.fantacalcio.it/login返回404,说明这个地址不是有效的登录页面/接口。解决第一步是找到网站真实的登录提交地址:

  • 打开浏览器访问https://leghe.fantacalcio.it,找到登录入口
  • 按下F12打开开发者工具,切换到「网络」标签页
  • 输入账号密码完成登录操作,找到请求类型为POST的那条请求,记录其请求URL(这才是真正接收登录数据的地址)
  • 同时查看该请求的Form Data,确认账号、密码对应的参数名(可能不是username/password,比如是email/pass这类)

2. 用httr2替代弃用的request_POST

当前rvest的会话系统基于httr2,推荐用httr2处理登录会话,再结合rvest解析页面,示例代码如下:

library(rvest)
library(httr2)

# 替换为抓包得到的真实登录API地址
login_api <- "https://leghe.fantacalcio.it/api/真实登录路径"

# 初始化会话
session <- session()

# 发送登录请求,替换参数名为你抓包得到的真实字段名
session <- session %>%
  req_url(login_api) %>%
  req_body_form(
    email = "你的真实账号",
    password = "你的真实密码"
  ) %>%
  req_perform()

# 访问需要登录的目标页面并解析数据
target_content <- session %>%
  req_url("你要爬取的目标页面URL") %>%
  req_perform() %>%
  resp_body_html()

# 示例:提取页面中class为target-data的元素文本
target_content %>% html_element(".target-data") %>% html_text()

3. 若为页面表单提交的场景

如果登录是通过页面内的表单提交(而非纯API接口),先找到包含登录表单的有效页面,再用rvest处理:

library(rvest)

# 替换为包含登录表单的真实页面URL
login_page <- "https://leghe.fantacalcio.it/真实登录页面"

# 创建会话并获取表单
session <- html_session(login_page)
login_form <- session %>% html_form()[[1]]

# 填充表单,参数名需与表单的name属性完全一致
filled_form <- login_form %>%
  set_values(
    `email` = "你的真实账号",
    `password` = "你的真实密码"
  )

# 提交表单,获取登录后的会话
session <- session %>% submit_form(filled_form)

# 跳转至目标页面并解析数据
session %>% jump_to("目标页面URL") %>% html_element(".需要抓取的选择器") %>% html_text()

关键注意事项

  • 必须通过抓包确认真实的登录地址和参数名,网站的登录接口可能随时变更
  • 部分网站会要求提交CSRF令牌,此时需要从登录页面先提取csrf_token这类参数,再一并填入表单或请求体
  • 若遇到反爬拦截,可添加浏览器UA头模拟正常访问:req_headers(User-Agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:07:16