2017-12-02 2 views
1

Rvest가있는 일부 웹 사이트에서 셀렉터를 사용할 수없는 이유를 이해할 수 없습니다.노드가 html_nodes로 탐지되지 않음

예 :

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 선택기 인해 selectr 패키지 (적어도 데비안에) 몇 가지 문제가 더 많은 정보를 원하시면이 볼에 rvest에서 작동하지 않을 수 있습니다 https://github.com/sjp/selectr/issues/7

SelectorGadget 및 크롬 개발자 도구를 사용하여, 나는 다음과 같은 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

관련 문제