如何使用rvest提取某些html节点



我是网络抓取的新手,所以我可能没有在这里进行所有正确的检查。我试图从url中抓取信息,但我无法提取所需的节点。请参阅下面的示例代码。在本例中,我想获得产品名称(Madone SLR 9 eTap Gen(,它似乎存储在buying-zone__title类中。

library(tidyverse)
library(rvest
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"
read_html(url) %>% 
html_nodes(".buying-zone__title") %>% 
html_text()

当我运行上面的代码时,我得到了{xml_nodeset (0)}。我该怎么解决这个问题?我也想从那个页面上刮下年份、价格、可用颜色和规格。任何帮助都将不胜感激。

该页面上有很多动态内容,可以通过禁用浏览器中运行的JS或将渲染的页面与页面源进行比较来查看。

您可以使用Ctrl+U查看页面源,然后使用Ctrl+F搜索产品名称在未渲染内容中的位置。

你想要的标题信息出现在很多地方,有很多方法可以获得。我将提供一个";如在锡"上;选项,因为代码给出了关于所选内容的明确指示。

我已经更新了语法并减少了导入的外部依赖项的数量。

library(magrittr)
library(rvest)
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"           
page <- read_html(url)    
name <- page %>% html_element("[product-name]") %>% html_attr("product-name")
specs <- page %>% html_elements('[class="sprocket__table spec"]') %>% html_table()
price <- page %>% html_element('#gtm-product-display-price') %>% html_attr('value') %>% as.numeric()

最新更新