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

使用R语言rvest爬取carzone二手车搜索结果返回空集问题求助

问题解决方法

核心原因

  • 目标页面的车辆列表为JavaScript动态渲染内容,rvest::read_html()仅能获取未执行JS的静态初始源码,动态生成的车辆条目、你选中的t-plum自定义标签在静态源码中不存在,因此返回空节点集。

方案1:调用搜索API(优先推荐)

网站的车辆数据通过后端接口返回,直接请求接口可高效获取完整数据,无需解析HTML。

library(httr)
library(jsonlite)

# 构造API请求,pageSize设为200可一次性拉取全部132条结果
api_req <- GET(
  url = "https://www.carzone.ie/rest/api/vehicle-search",
  query = list(
    make = "Toyota",
    model = "C-HR",
    vehicleType = "used",
    page = 1,
    pageSize = 200
  )
)

# 解析返回的JSON数据,提取所有车辆详情页链接
res_data <- fromJSON(content(api_req, as = "text"))
all_car_hrefs <- paste0("https://www.carzone.ie", res_data$vehicles$adUrl)

运行后all_car_hrefs即可得到全部132条结果的链接。

方案2:无头浏览器渲染后提取

如果需要解析完整渲染后的页面内容,可使用chromote等无头浏览器工具先执行页面JS,再用rvest提取:

library(chromote)
library(rvest)
library(magrittr)

target_url <- "https://www.carzone.ie/used-cars/toyota/c-hr"

# 启动无头浏览器加载页面,等待JS渲染完成
chrome_session <- ChromoteSession$new()
chrome_session$Page$navigate(target_url)
Sys.sleep(3) # 可根据网络速度调整等待时长

# 获取渲染完成的完整HTML
full_html <- chrome_session$Runtime$evaluate('document.documentElement.outerHTML')$result$value
chrome_session$close()

# 提取车辆链接
all_car_hrefs <- read_html(full_html) %>% 
  html_elements('a[data-testid="vehicle-card-image-link"]') %>% 
  html_attr('href') %>% 
  paste0("https://www.carzone.ie", .)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:57:01