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

使用R包rvest下载分页表格数据时出现重复数据问题

问题原因及解决方法

你的问题主要来自两个关键点:

1. 分页参数的计数逻辑误解

很多基于Drupal Views搭建的站点,分页参数page是从0开始计数的:

  • 不带page参数的默认链接,实际对应page=0(第一页)
  • page=1才是第二页
    如果你的测试中不带参数和page=1返回相同内容,说明该站点的page参数是从1开始计数的——不带参数默认就是page=1(第一页),第二页需要用page=2。

2. 未维持会话状态

部分站点的分页依赖会话Cookie验证,直接用read_html发起独立请求会被服务器视为新会话,不管page参数是多少,都会返回第一页内容。这时候必须用会话对象维持请求状态。


修正后的代码

library(rvest)

# 注意URL必须用引号包裹(你的原始代码遗漏了引号,属于语法错误)
link_base <- "https://econservation.jrc.ec.europa.eu/recordeddonors?title_selective=All&field_project_year_value_selective=All"

# 初始化会话,先访问初始页面获取必要的会话Cookie
session <- session(link_base)

get_content <- function(page_num) {
  page_url <- paste0(link_base, "&page=", page_num)
  print(page_url)
  
  # 使用会话对象跳转目标页面,维持会话状态
  page <- session %>% session_jump_to(page_url)
  table <- page %>%
    html_nodes(xpath='//*[@id="views-aggregator-datatable"]') %>%
    html_table()
  
  return(table[[1]])
}

# 测试获取前两页:如果站点page从0开始,用c(0,1);如果从1开始,用c(1,2)
tables <- lapply(c(0, 1), get_content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:17:50