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

使用rvest抓取APIS网站可折叠表格返回空值的技术求助

问题排查及解决方案

核心问题原因

你返回空值的核心问题是使用的CSS选择器.tab-tables :nth-child(1)和目标页面的实际节点结构不匹配,要么是页面不存在.tab-tables类的元素,要么是后代选择逻辑错误。

修正步骤

  1. 先确保已加载必要依赖包,初学者常遗漏这一步导致异常:
library(rvest)
library(dplyr)
  1. 调试获取正确的CSS选择器:
    打开目标页面按F12唤出开发者工具,点击左上角元素选择按钮,点选你要抓取的下拉标题/表格元素,在开发者工具的元素面板右键选中的对应节点,选择「复制」-「复制选择器」即可拿到准确的选择器。
  2. 参考可用采集代码:
link = "http://www.apis.ac.uk/select-feature?site=1001814&SiteType=SSSI&submit=Next"
# 可添加UA和超时参数避免反爬和网络问题
page = read_html(link, timeout = 10, user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")

# 提取所有折叠下拉标题,可替换为你自己复制的选择器
titles <- page %>% 
  html_nodes(".card-header a") %>% 
  html_text(trim = TRUE)

# 提取标题对应下方的表格内容
table_content <- page %>%
  html_nodes(".card-body table") %>%
  html_table(fill = TRUE)

# 输出为 下拉标题:对应内容 的结构
final_result <- setNames(table_content, titles)

额外调试技巧

如果还是拿不到内容,可以先运行page %>% html_structure()打印页面整体节点结构,确认你要的内容是否存在于静态页面中,排除内容是JS动态加载的情况(如果是JS动态加载的内容rvest无法直接抓取,需要用RSelenium等动态渲染工具)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 17:00:00