我怀疑问题在于您要搜索的节点位于 aspx form 内,因此它们仅针对浏览器生成,而不是针对 curl 请求。
我看到了两个解决方案:
使用 rvest
如果您只对产品名称或简单的东西感兴趣,您可以使用:
p <-wine %>%
html_nodes('.prodItemInfo_link') %>%
html_text()
我得到那个选择器来分析 wine %>% html_nodes('a') 寻找酒名的结果,发现产品在那个类里面。
使用 RSelenium
如果你已经安装并运行了 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())
希望对你有帮助