如何用R读取LACNIC指定URL的竖线分隔数据并生成DataFrame?
解决方法
目标页面的内容并非标准HTML表格,而是以|为分隔符的纯文本嵌套在<p>标签中,因此html_table()无法识别。可按以下步骤提取并转换为DataFrame:
1. 提取文本内容
先从<p>标签中提取所有文本内容:
library(tidyverse) library(rvest) url <- "https://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest" page <- read_html(url) # 提取p标签内的文本 raw_text <- page %>% html_element("p") %>% html_text2()
2. 分割文本并转换为DataFrame
将提取到的文本按行拆分,再按|分割每一行,最后整理成DataFrame:
# 按行拆分文本,过滤空行 text_lines <- str_split(raw_text, "\n") %>% unlist() %>% keep(~ .x != "") # 按|分割每一行,转换为数据框 df <- text_lines %>% str_split_fixed("\\|", n = Inf) %>% as.data.frame(stringsAsFactors = FALSE) # 可选:设置列名(跳过第一行元数据) col_names <- c("registry", "cc", "type", "start", "value", "date", "status") df <- df[-1, ] %>% set_names(col_names)
补充说明
html_text2()会自动处理换行符,比html_text()更适合提取多行文本str_split_fixed("\\|", n = Inf)确保按所有|分割,不会遗漏字段- 第一行是文件元数据(版本、注册机构、日期等),可选择跳过并给数据框设置合理列名
内容的提问来源于stack exchange,提问作者Rodrigo H. Ozon
相关产品推荐
相关产品推荐

