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

使用rvest包爬取需Cookie验证的表单类网站数据遇到问题求助

需求可行性确认

该需求完全可以实现,你提到的两个核心障碍都有成熟的解决方案,且该站点属于欧盟公共数据开放站点,无禁止非商业抓取的规则,只要控制请求频率避免给服务器造成额外压力即可正常操作。

具体实现步骤

  • 处理Cookie同意步骤:不需要模拟页面点击操作,你可以直接通过浏览器F12开发者工具的「网络」面板,手动点击同意Cookie时抓取对应的提交请求,获取请求携带的所有表单参数,用rvest的会话机制保持Cookie状态,将同意参数提交后即可正常访问后续页面。
  • 构造下载请求:不需要通过页面表单填充的方式触发下载,你可以先在浏览器中手动选择好「全部国家、全部时间范围、全部历史数据」的条件,点击Download按钮时抓取该下载请求的完整URL、请求方法、所有提交参数,直接在R中构造对应请求发送即可获取完整CSV文件,这种方式比页面元素定位填充的兼容性更高,也不需要找对应参数的页面引用。

参考代码框架

library(httr)
library(rvest)

# 初始化会话
fleet_session <- session("https://webgate.ec.europa.eu/fleet-europa/index_en")

# 提交Cookie同意,参数替换为你抓包获取的实际字段
consent_res <- fleet_session %>% 
  session_submit(
    form = list(
      # 此处替换为抓包拿到的同意Cookie的所有参数
      consent = "accept_all",
      required_cookies = "1",
      analytics_cookies = "1"
    )
  )

# 构造下载请求,URL和参数替换为你抓包Download按钮拿到的实际内容
csv_res <- consent_res %>% 
  session_jump_to(
    url = "此处替换为你抓包拿到的下载接口地址",
    method = "POST",
    body = list(
      # 此处替换为全量数据下载对应的所有请求参数
      country_filter = "all",
      time_filter = "all",
      include_history = "true",
      export_type = "csv"
    )
  )

# 保存并加载数据
writeBin(content(csv_res, "raw"), "fleet_full_data.csv")
fleet_data <- read.csv("fleet_full_data.csv", encoding = "UTF-8")

注意事项

所有请求参数请以你自己抓包获取的内容为准,不同站点的参数命名、接口地址都有差异,抓包获取的参数是最准确的,不需要参考其他案例的参数格式,直接套用自己抓包的结果即可。


内容的提问来源于stack exchange,提问作者Fred-LM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:24:04