2017-11-03 5 views
1

작동하지 않습니다.웹 긁어 rvest에 내가이 웹 사이트에서 의견을 긁어하기 위해 노력하고있어

url <- 'http://www.latercera.com/noticia/trabajos-realizan-donde-viven-los-extranjeros-tienen-residencia-chile/' 

webpage <- read_html(url) 

data_html <- html_nodes(webpage,"gig-comment-body") 

불행하게도 rvest는 CSS 셀렉터를 통해 노드 (공연 주석이 몸을) 인식하지 못하는 것 같다.

노드가 null 목록으로 나오므로 아무 것도 긁어 모으지 않습니다.

+0

페이지 소스보고에서 내 생각이 있다는 것입니다 코멘트는 자바 스크립트를 통해로드됩니다. ['RSelenium'] (https://cran.r-project.org/web/packages/RSelenium/index.html) (아마도 "PhantomJS"헤드리스 브라우저 인스턴스)와 같은 것을 사용해야 할 것입니다. – r2evans

답변

2

@ r2evans가 정확합니다. 그것은 자바 스크립트와 코멘트 <div>의 빌드와 그것도 지연이 필요합니다. (나는 splashr을했다 그래도 내가 정확히 공평하지 않다) 내가 셀레늄에 얼룩을 선호 :

고정 표시기없이 rselenium 또 다른 솔루션입니다
library(rvest) 
library(splashr) 

URL <- 'http://www.latercera.com/noticia/trabajos-realizan-donde-viven-los-extranjeros-tienen-residencia-chile/' 

# Needs Docker => https://www.docker.com/ 
# Then needs splashr::install_splash() 

start_splash() 

splash_local %>% 
    splash_response_body(TRUE) %>% 
    splash_go(URL) %>% 
    splash_wait(10) %>% 
    splash_html() -> pg 

html_nodes(pg, "div.gig-comment-body") 
## {xml_nodeset (10)} 
## [1] <div class="gig-comment-body"><p><span>Algunosdesubicados comentan y se refieren a la UE<span> </span>como si en alguna forma Chil ... 
## [2] <div class="gig-comment-body">Si buscan información se encontrarán que la unión Europea se está desmorona ndo por asunto de la inmi ... 
## [3] <div class="gig-comment-body">Pocos inmigrantes tiene Chile en función de su población. En España hay 4.5 mill de inmigrantes. 800. ... 
## [4] <div class="gig-comment-body">Chao chilenois idiotas tanto hablan y dicen que hacer cuando ni su pais les pertenece esta gobernado ... 
## [5] <div class="gig-comment-body">\n<div> Victor Hugo Ramirez Lillo, de Conchalí, exiliado en Goiania, Brasil, pecha bono de exonerado, ... 
## [6] <div class="gig-comment-body">Les escribo desde mi 2do pais, USA. Mi PDTE. TRUMP se bajó del TPP y Chile se va a la cresta. La o ... 
## [7] <div class="gig-comment-body">En CHILE siempre fuimos muy cuidadosos con le emigración, solo lo MEJOR de Alemania, Francia, Suecia, ... 
## [8] <div class="gig-comment-body"><span>Basta de inmigración!!! Santiago está lleno de vendedores ambulantes extranieros!!!¿¿esos son l ... 
## [9] <div class="gig-comment-body">IGNOREN A JON LESCANO, ESE ES UN CHOLO QUE FUE DEPORTADO DE CHILE.<div>IGNOREN A LOS EXTRANJEROS MET ... 
## [10] <div class="gig-comment-body">Me pregunto qué dirá el nacionalista promedio cuando agarre un libro de historia y se dé cuenta de qu ... 

killall_splash() 
+0

안녕하세요. hrbrmstr 멋진 솔루션입니다. 나는 splashr 시도 하고이 오류가있어. start_splash() initialize_python (required_module, use_environment)의 오류 : Python 설치가 없으므로 Python 바인딩이로드되지 않습니다. 내 R 버전은 3.4.2 패키지 installr – pirikitao

+0

에 의해 업데이트됩니다 그것은'docker' 패키지에 달려 있습니다. 그 오류를 해결하려면 해당 패키지를 조사해야합니다. (여기에 파일을 제출해야 할 수도 있습니다. https://github.com/bhaskarvk/docker/issues) – hrbrmstr

2

install.packages("RSelenium") 

library (RSelenium) 


driver<- rsDriver() 
remDr <- driver[["client"]] 

remDr$navigate("http://www.latercera.com/noticia/trabajos-realizan-donde-viven-los-extranjeros-tienen-residencia-chile/") 

elem <- remDr$findElement(using = "id",value = "commentsDiv-779453") 
#or 
elem <- remDr$findElement(using = "class name", "gig-comments-comments") 

elem$highlightElement() # just for interactive use in browser. 

elemtxt <- elem$getElementAttribute("outerHTML") # gets us the HTML 
+1

"도커가없는"것은 사용자가 Selenium을 실행하지 않고도 제공 할 수 있음을 의미합니다. Windows 시스템의 사용자는 물론 macOS에서도 점점 더 많이 사용되고 있습니다. 사실, 많은 사람들이 Docker b/c에서 여러 가지 * 드라이버를 사용하여 "그냥 작동"하게됩니다. "도커없이"할 수는 있지만 절대적으로 "주어진"것이 아닙니다. – hrbrmstr