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

如何使用rvest提取指定HTML节点?网页爬取问题求助

解决Trek自行车页面爬取问题

1. 无法提取产品名称的原因及解决方法

你遇到的{xml_nodeset (0)}问题,主要是两个原因:

  • 网站拦截了默认爬虫请求头(rvest的read_html默认UA会被识别为非浏览器请求)
  • 目标节点的类名或页面结构已发生变化

修复后的产品名称爬取代码

先通过httr添加浏览器请求头,模拟正常访问:

library(tidyverse)
library(rvest)
library(httr)

url <- "https://www.trekbikes.com/us/en_US/bikes/road-bikes/performance-road-bikes/madone/madone-slr/madone-slr-9-etap-gen-7/p/37420"

# 模拟Chrome浏览器请求头
headers <- add_headers(
  "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
)

# 发送请求并解析页面
page <- GET(url, headers) %>% content("text") %>% read_html()

# 提取产品名称(当前页面实际对应节点为h1.product-title)
product_name <- page %>% 
  html_nodes("h1.product-title") %>% 
  html_text(trim = TRUE)

product_name

如果上述方法仍无法获取内容,说明页面是JS动态渲染的,需要用RSelenium模拟浏览器加载:

library(RSelenium)

# 启动Chrome浏览器驱动(需提前安装ChromeDriver)
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

remDr$navigate(url)
page_source <- remDr$getPageSource()[[1]] %>% read_html()

product_name <- page_source %>% 
  html_nodes(".buying-zone__title") %>% 
  html_text(trim = TRUE)

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

2. 爬取其他字段的方法

年份

可从产品名称或meta标签提取:

# 从产品名称正则提取年份
year <- str_extract(product_name, "\\d{4}")

# 或从meta标签提取
year <- page %>% 
  html_nodes('meta[property="product:release_date"]') %>% 
  html_attr("content") %>% 
  str_sub(1,4)

价格

价格对应.product-price类节点:

price <- page %>% 
  html_nodes(".product-price") %>% 
  html_text(trim = TRUE)

可选颜色

颜色选项在.color-swatch__label类中:

colors <- page %>% 
  html_nodes(".color-swatch__label") %>% 
  html_text(trim = TRUE) %>% 
  discard(is_empty)

产品规格

规格存储在.specs-table表格中,可提取为数据框:

specs_table <- page %>% 
  html_nodes(".specs-table") %>% 
  html_table(header = TRUE) %>% 
  .[[1]] %>% 
  rename(Spec = 1, Value = 2)

注意事项

  • 爬取前需查看网站的robots.txt文件,确保允许爬取目标页面
  • 不要频繁发送请求,避免被网站封禁IP
  • 网站结构可能随时变化,需定期检查节点选择器是否有效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:01:15