
本文介绍两种可靠方法:直接调用 `html_table()` 自动解析表格,或手动定位 `
在使用 rvest 进行网页表格抓取时,初学者常因 CSS 选择器语法错误导致变量为空——例如将标签名 td 误写为类选择器 .td(带点号),这会让 html_nodes() 去查找名为 td 的 CSS 类,而非
最简洁高效的方式是利用 rvest 内置的 html_table() 函数,它能自动识别并解析页面中所有
| 标签中第 1 个子元素(即第一列)。 修正后的代码如下: rank <- url %>% html_nodes("td:nth-child(1)") %>% html_text(trim = TRUE)
company <- url %>% html_nodes("td:nth-child(2)") %>% html_text(trim = TRUE)
website <- url %>% html_nodes("td:nth-child(3)") %>% html_text(trim = TRUE) # 更清晰:直接选第3列,替代模糊的 "td~ td+ td"
fortune500 <- data.frame(
rank = as.integer(rank),
company = company,
website = website,
stringsAsFactors = FALSE
)关键注意事项:始终添加 trim = TRUE 参数避免前后空白符干扰;对数值型字段(如 rank)显式转换类型(如 as.integer()),防止存储为字符;使用 html_table() 时注意:若页面含多个表格,需用 pluck(n) 或 [[n]] 显式指定目标表格索引;网页结构可能随时间变化,建议先用 html_structure(url) 或浏览器开发者工具(Elements 面板)验证实际 HTML 标签与层级。 两种方法均经实测有效,推荐优先使用 html_table() —— 它更健壮、可读性强且维护成本低;仅在需精细控制字段映射或处理复杂合并单元格时,再采用手动节点提取策略。 |











