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

R/rvest获取点击文本对应href链接 html_attr调用失败求解

问题原因
  • 你代码里选中的div.p13n-desktop-grid是包裹所有商品卡片的外层div容器,div标签本身没有href属性,直接对这个节点取href属性必然返回空值。
  • html_node()只会返回匹配选择器的第一个元素,就算选对了标签,也没法批量拿到所有商品的跳转链接。
  • 可点击跳转的链接是挂载在容器内部的<a>(超链接)标签上的,需要先定位到容器内对应的a标签节点,再提取href属性。
修正后的可运行代码
library(rvest)
url <- "https://www.amazon.com/Best-Sellers-Industrial-Scientific-3D-Printers/zgbs/industrial/6066127011/ref=zg_bs_pg_1?_encoding=UTF8&pg=1"
web <- rvest::read_html(url)

# 提取商品链接
product_links <- web %>%
  html_element("div.p13n-desktop-grid") %>%
  html_elements("a.a-link-normal[href*='/dp/']") %>% # 筛选指向商品详情页的超链接
  html_attr("href") %>%
  unique() # 去重:同一商品的标题、图片都会绑定同一个链接,会重复提取

# 补全为完整可访问链接(默认提取到的是相对路径)
product_links <- paste0("https://www.amazon.com", product_links)
常见问题处理
  • 如果运行后提取结果为空,是触发了亚马逊的反爬校验,可以给请求加浏览器UA头模拟正常用户访问,代码如下:
library(httr)
# 构造带UA的请求再解析
web <- read_html(
  GET(
    url,
    user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36")
  )
)
  • 如果提取到无关链接,可以进一步收窄CSS选择器的匹配范围,比如限定到商品卡片的class层级内再找a标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:09:16