将含文本表格的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
相关产品推荐
相关产品推荐

