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

使用rvest与R爬取网页遇阻:无法获取汽车页面链接求助

解决动态页面爬取汽车链接的问题

你猜的没错!这个网站的汽车列表确实是通过JavaScript动态渲染出来的,直接用read_html只能拿到服务器返回的初始静态HTML,那些带vozilo类的汽车条目元素根本不在初始源码里,所以你的代码会返回空对象。

要解决这个问题,我们需要用支持JavaScript渲染的工具来获取完整的页面内容,下面给你两种常用的R语言解决方案:

方法一:使用RSelenium(基于Selenium)

RSelenium可以模拟真实浏览器的行为,让页面完整渲染后再抓取内容,步骤如下:

  1. 先安装所需的包:
install.packages("RSelenium")
install.packages("rvest")
install.packages("wdman")
  1. 运行爬取代码:
library(RSelenium)
library(rvest)
library(wdman)

# 启动Chrome驱动(需要你的系统安装了Chrome浏览器)
chrome_driver <- chrome()
remDr <- remoteDriver(browserName = "chrome", port = chrome_driver$port)

# 打开浏览器会话
remDr$open()

# 访问目标页面
remDr$navigate("https://www.askramar.com/Ponuda")

# 等待5秒让JavaScript完成渲染(可以根据网络情况调整时间)
Sys.sleep(5)

# 获取渲染后的完整页面源码
page_source <- remDr$getPageSource()[[1]]
html_document <- read_html(page_source)

# 提取汽车详情页链接(沿用你原来的XPath选择器)
links <- html_document %>% 
  html_nodes(xpath = '//*[contains(concat(" ", @class, " "), concat(" ", "vozilo", " "))]') %>% 
  html_attr("href")

# 关闭浏览器和驱动
remDr$close()
chrome_driver$stop()

# 查看爬取结果
head(links)

方法二:使用Playwright for R(更现代的选择)

Playwright是微软推出的自动化测试工具,对动态页面的支持更友好,而且配置更简单:

  1. 安装并初始化Playwright:
install.packages("playwright")
playwright::install() # 安装浏览器驱动
  1. 爬取代码示例:
library(playwright)
library(rvest)

# 启动Playwright并打开无头Chrome(不显示浏览器窗口)
pw <- playwright$launch()
browser <- pw$chromium$launch(headless = TRUE)
page <- browser$new_page()

# 访问页面,等待网络空闲(确保JS加载完成)
page$goto("https://www.askramar.com/Ponuda", wait_until = "networkidle")

# 获取完整页面源码
page_source <- page$content()
html_document <- read_html(page_source)

# 提取链接
links <- html_document %>% 
  html_nodes(xpath = '//*[contains(concat(" ", @class, " "), concat(" ", "vozilo", " "))]') %>% 
  html_attr("href")

# 关闭所有资源
page$close()
browser$close()
pw$stop()

# 查看结果
head(links)

额外提示

如果运行后还是没拿到链接,建议打开浏览器开发者工具(F12),检查渲染后的页面元素,确认你的XPath选择器是否准确——有时候网站会调整类名或元素结构,需要根据实际情况修改选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:02:01