rvest 网络抓取在尝试收集产品价格信息时返回空数据框

rvest web scraping is returning an empty data frame when attempting to collect product price information

我正在尝试使用 'rvest' 从 https://www.lowes.com/pl/Lawn-garden-hand-tools-Outdoor-tools-equipment-Outdoors/4294612737?goToProdList=true&int_cmp=LawnGardenHandTools:C:Outdoors:Merch:shop_all_copy 抓取产品定价。我正在使用以下代码:

library(rvest)
library(tidyverse)

url <- "https://www.lowes.com/pl/Lawn-garden-hand-tools-Outdoor-tools-equipment-Outdoors/4294612737?goToProdList=true&int_cmp=LawnGardenHandTools:C:Outdoors:Merch:shop_all_copy"

html <- read_html(url)

price <- html %>%
  html_node('body') %>%
  xml_find_all("//span[contains(@class, 'h5 js-price v-spacing-mini art-pl-price')]") %>% 
  html_text() %>%
  data.frame()

但是 - 这将返回一个空数据框。

如有任何建议,我们将不胜感激。

rvest 只能抓取静态 HTML 内容。

大多数现代商业网站使用由 JavaScript.

动态生成的动态网页内容

为了抓取此类网站,您首先需要让网站生成您要查找的 HTML 内容,然后您就可以使用 rvest 抓取它。

为此,您需要使用网络浏览器模拟器,例如 RSelenium or Splash 以允许您在站点中四处移动并以编程方式查询数据。

RSelenium 需要安装 Docker Selenium server。这也推荐用于 Splash。

在这个漫长而有趣的旅程结束时,您必须要有创意,这样网站才不会认为它正在被机器人查询: