尝试收集产品价格信息时,RVest Web抓取返回一个空数据框

时间:2020-06-18 16:50:31

标签: html r xml web-scraping rvest

我正在尝试使用“ 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()

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

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:3)

rvest只能抓取静态HTML内容。

大多数现代商业网站都使用JavaScript动态生成的动态Web内容。

为了抓取此类网站,您首先需要使该网站生成您要查找的HTML内容,然后您可以使用rvest对其进行抓取。

为此,您需要使用RSeleniumSplash之类的网络浏览器仿真器,以便您可以在站点中移动并以编程方式查询数据。

RSelenium需要安装Docker Selenium server。也建议将其用于Splash。

在漫长而有趣的旅程的最后,您必须具有创造力,以使网站不会认为它是由机器人查询的:
bot Captcha