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

使用rvest爬取欧盟关税配额页面返回空向量的问题求助

问题原因分析与解决方案

核心问题:静态抓取无法获取JS动态渲染的内容

你用read_html()直接请求页面,只能拿到服务器返回的静态HTML骨架,但这个页面的配额数据是通过JavaScript动态加载到页面中的——那些你要找的#overlayPanel、#quotaMarkedUpContainer元素,在初始静态HTML里根本不存在,自然返回空向量。

两种可行解决方案


1. 用浏览器自动化工具渲染页面(适合新手快速上手)

比如用RSelenium或者playwright包,模拟真实浏览器加载页面,执行所有JS代码后再抓取内容。举个RSelenium的简单示例:

library(RSelenium)
library(rvest)

# 启动浏览器驱动(需要提前安装对应浏览器的驱动,比如ChromeDriver)
driver <- rsDriver(browser = "chrome", port = 4444L)
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://ec.europa.eu/taxation_customs/dds2/taric/quota_consultation.jsp?Lang=en&Origin=&Code=090008&Critical=&Status=&Year=2023&Expand=true")

# 等待页面加载完成(可根据实际情况调整等待时间)
Sys.sleep(3)

# 获取渲染后的页面源码
page_source <- remDr$getPageSource()[[1]]
html <- read_html(page_source)

# 现在可以尝试用你的选择器抓取内容了
quota_info <- html %>% html_elements("#quotaMarkedUpContainer")

# 关闭浏览器
remDr$close()
driver$server$stop()

2. 直接请求数据接口(更高效稳定)

打开浏览器开发者工具(F12),切换到「网络」标签,刷新页面后找XHR/Fetch请求,能找到页面加载数据的API接口。比如这个页面可能会请求某个JSON或XML接口获取配额数据,直接用httr包请求这个接口,拿到结构化数据,比解析HTML更方便。

额外提示

  • 静态抓取只适合纯服务器渲染的页面,遇到现代动态网站必须用浏览器自动化或抓接口的方式。
  • 使用浏览器工具时,注意遵守网站的robots.txt规则,不要频繁请求给服务器造成压力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:58:24