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

使用map()批量转换HTML为RDS时触发UseMethod()报错求助

解决批量HTML转RDS时xml_find_first方法不适用的错误

问题定位

错误出现在第19531个文件的处理流程中,本质是html_text2()内部调用的xml_find_first无法处理当前解析出的xml_document对象。大概率是目标HTML文件格式异常、损坏或不符合标准规范,导致html_text2()的内部逻辑无法正常执行。

解决方案

1. 增加错误捕获,避免批量任务中断

修改代码加入tryCatch,让单个文件失败时不终止整个批量流程,同时记录错误文件信息:

library(purrr)
library(rvest)
library(stringr)

rip_text <- function(court_file){
  tryCatch({
    ripped_text <- read_html(court_file, options = "HUGE") |>
      html_text2() |> 
      str_remove('^.*PubDate":"\\d{4}-\\d\\d-\\d\\d",\n') |>
      str_remove('\\}";; var jsonData.*$') 
    list(file = court_file, text = ripped_text, error = NA)
  }, error = function(e){
    message(paste("处理失败:", court_file))
    list(file = court_file, text = NA, error = as.character(e))
  })
}

# 执行批量处理
ripped_files <- map(html_files, rip_text)

# 分离成功结果与错误日志
success_data <- keep(ripped_files, ~is.na(.x$error))
error_records <- keep(ripped_files, ~!is.na(.x$error))

# 保存结果
saveRDS(success_data, "success_ripped_texts.rds")
saveRDS(error_records, "error_log.rds")

2. 排查异常文件

从error_records中取出出错文件路径,手动验证:

problem_file <- html_files[19531]
# 检查文件解析结果
doc <- read_html(problem_file, options = "HUGE")
# 手动测试html_text2的报错详情
html_text2(doc)

如果文件确实存在损坏、乱码或非标准标记,可直接跳过该文件,或修复格式后重新处理。

3. 替换文本提取函数提升兼容性

若html_text2对异常HTML兼容性不足,可改用更基础的html_text替代,虽然可能保留更多冗余文本,但能避免方法不适用的错误:

ripped_text <- read_html(court_file, options = "HUGE") |>
  html_text() |> # 替换为html_text
  str_remove('^.*PubDate":"\\d{4}-\\d\\d-\\d\\d",\n') |>
  str_remove('\\}";; var jsonData.*$') 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:12:01