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

在R中用rvest/RSelenium爬取链接:如何区分特定属性的<a>标签?

嗨,这个问题其实很好解决,不管你用rvest还是RSelenium,核心都是通过精准匹配属性值来定位目标标签——毕竟这两个<a>标签唯一的差异就是data-featured-tracking的属性值嘛。下面给你具体的实现方法:

方法一:用rvest(推荐,轻量高效)

rvest支持CSS选择器和XPath,两种方式都能轻松定位到目标元素:

用CSS选择器(更简洁)

CSS选择器可以直接通过[属性名='属性值']的语法筛选元素,针对你的场景:

library(rvest)

# 先读取目标页面(替换成你的网页URL或本地HTML内容)
target_page <- read_html("https://your-target-url.com")

# 爬取data-featured-tracking为"listing_no_promo"的链接
no_promo_links <- target_page %>%
  html_elements("a[data-featured-tracking='listing_no_promo']") %>%
  html_attr("href")  # 提取href属性

# 爬取data-featured-tracking为"listing_promo"的链接
promo_links <- target_page %>%
  html_elements("a[data-featured-tracking='listing_promo']") %>%
  html_attr("href")

用XPath(兼容性更强)

如果你习惯用XPath,也可以通过属性匹配来定位:

# 爬取无promo的链接
no_promo_links_xpath <- target_page %>%
  html_elements(xpath = "//a[@data-featured-tracking='listing_no_promo']") %>%
  html_attr("href")

# 爬取带promo的链接
promo_links_xpath <- target_page %>%
  html_elements(xpath = "//a[@data-featured-tracking='listing_promo']") %>%
  html_attr("href")

方法二:用RSelenium(动态页面场景)

如果你的目标页面是动态加载的(比如需要JS渲染),用RSelenium的话思路完全一致,只是调用方法稍有不同:

library(RSelenium)

# 启动浏览器驱动(这里以Chrome为例)
driver <- rsDriver(browser = "chrome")
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://your-target-url.com")

# 定位并提取无promo的链接
no_promo_elems <- remDr$findElements(using = "css selector", value = "a[data-featured-tracking='listing_no_promo']")
no_promo_links_selenium <- sapply(no_promo_elems, function(x) x$getElementAttribute("href"))

# 定位并提取带promo的链接
promo_elems <- remDr$findElements(using = "css selector", value = "a[data-featured-tracking='listing_promo']")
promo_links_selenium <- sapply(promo_elems, function(x) x$getElementAttribute("href"))

# 关闭驱动
remDr$close()
driver$server$stop()

核心逻辑就是抓住两个标签唯一的差异化属性data-featured-tracking,用属性匹配的方式精准筛选,这样就能把两类链接分开爬取啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:23:45