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

使用R与rvest将HTML转换为data.frame的简易方法求助

解决方案

这个页面的内容是在<pre>标签里的纯文本排版,并非标准结构化表格,直接用rvest::html_nodes()提取节点拿不到日期和大小字段,得先提取<pre>内的完整文本再做字符串处理,具体步骤如下:

  1. 加载所需R包:
library(rvest)
library(stringr)
library(dplyr)
  1. 读取HTML内容并提取<pre>标签里的文本:
# 替换成你的HTML内容或目标网页URL
html_content <- '<pre>      
<a href="?C=N;O=D">Name</a>                    <a href="?C=M;O=A">Last modified</a>      <a href="?C=S;O=A">Size</a>  <hr>      <a href="/src/contrib/Archive/">Parent Directory</a>                             -      
      <a href="dplyr_0.8.0.tar.gz">dplyr_0.8.0.tar.gz</a>      2019-02-14 22:22  1.1M  
      <a href="dplyr_0.8.1.tar.gz">dplyr_0.8.1.tar.gz</a>      2019-05-14 12:20  1.1M  
      <a href="dplyr_0.8.2.tar.gz">dplyr_0.8.2.tar.gz</a>      2019-06-29 04:50  1.1M  
      <a href="dplyr_0.8.3.tar.gz">dplyr_0.8.3.tar.gz</a>      2019-07-04 15:50  1.1M  
      <a href="dplyr_0.8.4.tar.gz">dplyr_0.8.4.tar.gz</a>      2020-01-31 17:20  1.1M  
      <a href="dplyr_0.8.5.tar.gz">dplyr_0.8.5.tar.gz</a>      2020-03-07 12:20  1.3M  
      <a href="dplyr_1.0.0.tar.gz">dplyr_1.0.0.tar.gz</a>      2020-05-29 15:00  817K    
<hr></pre>'

pre_text <- read_html(html_content) %>% 
  html_node("pre") %>% 
  html_text()
  1. 清理文本并过滤有效行:
# 按换行拆分文本,去掉每行首尾空格
lines <- str_split(pre_text, "\\n")[[1]] %>% 
  trimws()

# 过滤掉空行、表头行、Parent Directory行和含<hr>的无效行
valid_lines <- lines[lines != "" & !str_detect(lines, "^Name|Parent Directory|<hr>")]
  1. 拆分字段并转换为data.frame:
# 以两个及以上空格为分隔符拆分每行内容
data_matrix <- str_split(valid_lines, "\\s{2,}", simplify = TRUE)

# 转为数据框并设置列名
df <- as.data.frame(data_matrix, stringsAsFactors = FALSE) %>% 
  setNames(c("Name", "Datetime", "Size"))

执行完上述代码后,df就是包含名称、日期时间和大小字段的目标data.frame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:15:06