我正在尝试使用Rvest从Wine.com中选择产品
library(rvest)
wine <- read_html("http://www.wine.com/v6/90-Rated-Under-20/wine/list.aspx?N=7155+2407")
p <-wine %>%
html_nodes(".listProductName") %>%
html_text()
我使用CSS Selector来查看.listProductName选择产品节点。当我运行此代码时,不会返回任何内容。有什么想法吗?
答案 0 :(得分:2)
我怀疑问题在于您搜索的节点位于aspx form
内,因此它们仅针对浏览器生成,而不是针对卷曲请求生成。
我看到两个解决方案:
如果您只对产品名称感兴趣或可以使用简单的东西:
p <-wine %>%
html_nodes('.prodItemInfo_link') %>%
html_text()
我得到了那个选择器,分析了wine %>% html_nodes('a')
查找葡萄酒名称的结果,发现该类中的产品。
如果您安装并运行了Selenium,我们可以模拟正常的浏览器请求:
remDr <- remoteDriver(remoteServerAddr = "localhost"
, port = 4444L
, browserName = "htmlunit"
)
remDr$open()
url <- "http://www.wine.com/v6/90-Rated-Under-20/wine/list.aspx?N=7155+2407"
remDr$navigate(url)
此页面应与我们使用普通浏览器看到的页面相同,因此我们可以选择具有其类别的节点:
webElems <- remDr$findElements(using = 'class', 'listProductName')
然后提取每个节点的文本内容:
wines <- sapply(webElems, function(x) x$getElementText())
希望这有帮助