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

如何用rvest爬取付费墙登录后的HTML表格?

解决付费墙内容爬取问题的可行方案

1. 补全完整的session登录流程

你当前的代码只完成了表单填写,缺少提交表单的关键步骤,完整流程需包含登录会话的初始化、表单提交以及后续的付费页访问:

library(rvest)

# 初始化会话
session <- html_session("https://www.fantasymojo.com")

# 跳转到网站登录页(需确认网站实际登录页URL,比如可能是/login路径)
login_page <- jump_to(session, "https://www.fantasymojo.com/login")

# 获取登录表单(若存在多个表单,需确认索引是否正确)
login_form <- html_form(login_page)[[1]]

# 填写真实账号密码(注意字段名需和表单实际匹配)
filled_form <- set_values(login_form,
                          email = "your_real_email",
                          password = "your_real_password")

# 提交表单完成登录
logged_in_session <- submit_form(session, filled_form)

# 登录后访问付费内容页
paid_page <- jump_to(logged_in_session, "https://www.fantasymojo.com/index.php/2020/08/02/2020-ffpc-bestballadp-july/")

# 提取目标表格
paid_table <- paid_page %>%
  html_element("table") %>%
  html_table()

2. 确认表单字段的正确性

很多网站的登录表单字段名并非email或password,比如可能是user_login、user_pass这类命名。你可以先打印表单结构确认字段:

# 打印表单所有字段信息
print(login_form)

根据输出的字段名调整set_values中的参数,确保和表单实际字段完全匹配。

3. 处理JavaScript渲染场景

如果网站登录流程依赖JavaScript(比如异步提交、JS验证),rvest无法处理动态内容,需使用浏览器自动化工具:

  • RSelenium:模拟真实浏览器操作,支持JS渲染
  • playwright for R:现代自动化库,稳定性更强

以playwright为例的核心代码:

library(playwright)

# 启动Firefox浏览器(headless=FALSE可可视化操作过程)
pw <- playwright$firefox()
browser <- pw$launch(headless = FALSE)
page <- browser$new_page()

# 访问登录页
page$goto("https://www.fantasymojo.com/login")

# 填写账号密码(需确认输入框的CSS选择器)
page$fill('input[name="email"]', "your_real_email")
page$fill('input[name="password"]', "your_real_password")

# 点击登录按钮(确认按钮的CSS选择器)
page$click('button[type="submit"]')

# 登录后跳转付费页
page$goto("https://www.fantasymojo.com/index.php/2020/08/02/2020-ffpc-bestballadp-july/")

# 提取表格内容
table_html <- page$inner_html("table")
paid_table <- read_html(table_html) %>% html_table()

# 关闭浏览器
browser$close()
pw$stop()

4. 配置请求头与验证会话状态

部分网站会验证请求头(如User-Agent),可在初始化会话时设置模拟浏览器的UA:

session <- html_session("https://www.fantasymojo.com", 
                        httr::user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"))

登录成功后,可通过logged_in_session$cookies查看是否存在有效登录Cookie,确认会话保持正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:50:45