使用rvest登录网页报错:未知字段名customer[email]、customer[password]求助
解决rvest登录时的"Unknown field names"错误
Let's walk through fixing this issue step by step — there are two main problems in your code that are causing the error and stopping you from logging in successfully:
1. 「Unknown field names」错误的根源
当你用html_form(pgsession)解析表单时,rvest会提取页面里的实际字段名,但你写的customer[email]、customer[password]和rvest检测到的字段名不匹配。永远不要假设字段名,一定要先查看解析后的表单结构。
在pgform <- html_form(pgsession)之后添加这行代码,就能看到真实的字段名:
print(pgform)
你大概率会发现登录字段的名称是email和password(没有customer[]的包裹),这就是rvest抛出「未知字段名」错误的原因。
2. 你没有提交登录表单!
你当前的代码只是填充了表单,但从未把表单发送给服务器——直接跳转到订单页面自然无法访问需要登录才能查看的内容。
带注释的修正代码
这是修复后的完整代码,每一步都做了对应调整:
library(XLConnect) library(rvest) # 1. 初始化会话并加载登录页面 url_login <- "https://www.silversanz.com/es/account/login" pgsession <- html_session(url_login) # 2. 解析并检查表单(取消注释可查看字段名) pgform <- html_form(pgsession) # print(pgform) # 运行一次确认字段名 # 3. 使用pgform里的真实字段名填充表单 filled_form <- set_values( pgform[[1]], # 定位第一个(登录)表单 email = "mymail", # 替换为你的真实邮箱 password = "mypass" # 替换为你的真实密码 ) # 4. 提交表单完成登录 session_after_login <- submit_form(pgsession, filled_form) # 5. 使用已认证的会话访问订单页面 url_orders <- "https://www.silversanz.com/mi-cuenta/pedidos" dades <- read_html(session_after_login, url_orders) # 6. 修正数据提取逻辑(原代码错误使用了html_attr) date <- dades %>% html_nodes(".order__date") %>% html_text(trim = TRUE) total <- dades %>% html_nodes(".order__total") %>% html_text(trim = TRUE) state <- dades %>% html_nodes(".order__state") %>% html_text(trim = TRUE) # 7. 清理数据并导出 info <- data.frame(date, state, total) info <- info[complete.cases(info), ] # 更高效的去NA方式 info <- info[!duplicated(info), ] writeWorksheetToFile( file = "C:/Users/...", # 替换为你的真实文件路径 data = info, sheet = "item", clearSheets = TRUE )
关键改动说明:
- 添加了表单检查步骤,确保使用正确的字段名
- 新增
submit_form(),把登录凭证真正发送给服务器 - 使用认证后的会话
session_after_login访问订单页面 - 修正了数据提取逻辑:用
html_nodes(".order__date")定位类名为order__date的元素,再用html_text()获取可见文本(原代码错误尝试获取名为order__date的属性,这个属性并不存在)
如果运行print(pgform)后仍然有字段名错误,直接把输出里的name值原样放到set_values()里即可。
内容的提问来源于stack exchange,提问作者xuriguer
相关产品推荐
相关产品推荐

