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

将含文本表格的HTM文件转为DataFrame遇格式混乱问题求助

问题

我尝试将包含文本表格的HTML文件转换为DataFrame,参考相关问题后仍未解决,表格出现格式混乱。可复现代码如下:

# URL of the website 
url <- paste0("https://www.uspto.gov/web/offices/ac/ido/oeip/taf/st_co_93.htm") 

# Read the HTML code of the page regarding the interested table
html_code <- paste(readLines(url))[44:99]

# Transform text into a table
table_df <- read.table(text = html_code, skip = 3, fill = NA, 
                       col.names = c("CODE", "STATE/COUNTRY", "UTILITY", "DESIGN", "PLANT","REISSUE","TOTALS","SIRS"))
解决方案

你的问题出在手动读取HTML行并切片的方式:HTML的文本行和表格的结构化数据并不对应,混在一起的标签和内容会让read.table无法正确解析列。正确做法是用专门的HTML表格解析工具,比如rvest包:

# 首次运行需安装rvest包
if (!require("rvest")) install.packages("rvest")
library(rvest)

# 读取目标页面
url <- "https://www.uspto.gov/web/offices/ac/ido/oeip/taf/st_co_93.htm"
page <- read_html(url)

# 提取页面中的目标表格(自动解析<tr><td>标签结构)
table_df <- page %>% 
  html_element("table") %>% 
  html_table(header = TRUE, fill = TRUE)

# 修正列名(匹配你需要的命名)
colnames(table_df) <- c("CODE", "STATE/COUNTRY", "UTILITY", "DESIGN", "PLANT", "REISSUE", "TOTALS", "SIRS")

# 过滤无效行(如空行、合计标题行)
table_df <- table_df[!is.na(table_df$CODE) & nchar(table_df$CODE) > 0, ]
说明
  • rvest的html_table函数会自动识别HTML表格的结构化标签,不需要手动切片行,彻底避免格式混乱
  • 最后一步过滤是为了移除页面表格中的非数据行(比如顶部的标题行、空行)
  • 若页面有多个表格,可将html_element换成html_elements,再通过索引选择目标表格(如[[1]]取第一个)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:20:02