2017-12-02 57 views
1

我不明白为什么我不能在Rvest的某些网站上使用选择器。未检测到html_node的Rvest节点

实施例:

url <- read_html("http://www.cbc.ca/news/politics") 

headlines <- url %>% 
html_nodes(".headline") %>% 
html_text() 

又如:

library(RSelenium) 

rD <- rsDriver(verbose = FALSE) 
rD 
remDr <- rD$client 

url <- "http://www.cbc.ca/news/politics" 
remDr$navigate(url) 

remDr$getTitle() 
remDr$getCurrentUrl() 

webElem <- remDr$findElement(using = "class", value = 'headline') 

webElem$getElementAttribute("class") 

remDr$close() 
rD$server$stop() 

它应该足够简单。当我看结构时,标题是在课堂标题下。上面有类卡片内容,卡片内容顶部,但没有组合的CSS选择器,也没有xpath似乎工作。

+0

我看不出有什么类的标题或类卡片内容 – lukeA

+0

当我看着在开发者控制台的页面,它的存在。即使在使用SelectorGadget时,也就是所识别的CSS选择器。 – Monduiz

回答

1

CSS选择器可能无法在rvest由于有一些问题(至少在Debian)的selectr包,看到这个更多信息工作: https://github.com/sjp/selectr/issues/7

使用SelectorGadget和Chrome开发人员工具,我用下面的XPath从网页中找到并识别“头条新闻”。如何找到正确的XPath的更多信息可以在这里找到:(?) https://medium.com/@peterjgensler/functions-with-r-and-rvest-a-laymens-guide-acda42325a77

library('rvest') 
library('magrittr') 
url <- read_html("http://www.cbc.ca/news/politics") 


headlines <- url %>% 
html_nodes(xpath = '//*[contains(concat(" ", @class, " "), concat(" ", "pinnableHeadline", " "))]') %>% 
html_text() 

headlines[1] 
"On Trudeau's 2nd trip to China, time may be ripe to advance free 
trade" 
headlines[2] 
"Liberals want to be global leader on open government, but face complaints at home" 
+0

这工作!我会向Rvest提出一个问题。 – Monduiz