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

使用rvest抓取带onclick属性的政府采购供应商公司名问题

嘿,我看了你遇到的问题——用rvest提取政府采购网站里带onclick事件的公司名称标签内容没成功,对吧?结合你给的HTML结构和代码,我给你两个可行的解决思路:

解决方法:提取带有onclick事件的a标签文本

情况1:页面内容是JavaScript动态渲染的

你遇到的很可能是动态加载的问题:read_html()只能抓取页面的静态源码,而这个带onclick的a标签内容可能是页面加载后通过JS动态插入的,静态源码里根本没有。这种情况得用浏览器自动化工具模拟真实访问:

library(RSelenium)
library(rvest)

# 启动Chrome浏览器(需提前安装ChromeDriver并配置好环境)
driver <- rsDriver(browser = "chrome", port = 4567L)
remote_driver <- driver[["client"]]

# 访问目标页面
remote_driver$navigate("https://comunidad.comprasdominicana.gob.do//Public/Tendering/OpportunityDetail/Index?noticeUID=DO1.NTC.700904")

# 获取加载完成后的页面源码
page_source <- remote_driver$getPageSource()[[1]]
page <- read_html(page_source)

# 提取公司名称,同时清理多余空格
company_names <- page %>% 
  html_nodes(".BusinessCardCompanyName") %>% 
  html_text(trim = TRUE)

print(company_names)

# 用完记得关闭浏览器和服务
remote_driver$close()
driver$server$stop()

情况2:内容是静态存在的,优化选择器即可

如果静态源码里其实有这个内容,只是你的抓取方式有小问题,可以试试更精确的选择器,同时处理文本的多余空格:

library(rvest)
library(dplyr)

url <- "https://comunidad.comprasdominicana.gob.do//Public/Tendering/OpportunityDetail/Index?noticeUID=DO1.NTC.700904"
page <- read_html(url)

# 用更精确的层级选择器定位目标a标签
company_names <- page %>% 
  html_nodes("td.BusinessCardContentCell a.BusinessCardCompanyName") %>% 
  html_text(trim = TRUE)

print(company_names)

小技巧:先排查静态源码

你可以先手动验证一下:打开目标页面后,按Ctrl+U查看页面的静态源代码(不是F12的元素审查),搜索BusinessCardCompanyName关键词。如果能找到对应的公司名称文本,就用情况2的方法;如果找不到,那肯定是动态加载的,必须用情况1的浏览器自动化方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:47:35