2017-02-02 1 views
1

텍스트를 포함하는 각 요소에 공백을 추가하는 방법이 있습니까? 이 예를 들어 :텍스트 요소에 공백 추가

movie <- read_html("http://www.imdb.com/title/tt1490017/") 
cast <- html_nodes(movie, "#titleCast span.itemprop") 
cast %>% html_structure() 
[[1]] 
<span.itemprop [itemprop]> 
    {text} 

[[2]] 
<span.itemprop [itemprop]> 
    {text} 

내가 html_text()를 사용 전에 각 텍스트 요소 에 후행 공백을 추가 할 것입니다. html_text()을 문서 계층 구조에서 위로 사용하려는 다른 사용 사례가 있습니다. 결과적으로 여러 텍스트가 하나의 벡터 요소 내에서 결합됩니다. 이로 인해 해당 파트의 시작과 끝을 추론 할 수 없습니다.

답변

4

다음과 같은 것이 있습니까?

doc <- minimal_html("Hello<p>World</p>") 
doc %>% html_text # HelloWorld 
doc %>% html_text_collapse(" ") # Hello World 

그래서 여기에 만약이 코드입니다 : 완벽하게 작동

require(stringi) 
require(rvest) 

html_text_collapse <- function(x, collapse = " ", trim = TRUE){ 
    text <- html_text(html_nodes(x, xpath = ".//text()[normalize-space()]")) 
    if (trim) { 
    text <- stri_trim_both(text) 
    } 
    paste(text, collapse = collapse) 
} 
+0

, 정말 감사합니다! :)이 코드 조각이 어떻게 작동하는지 간략히 설명해 주시겠습니까? 나는''''UseMethod()'''에 익숙하지 않다. – methodds

+1

@methodds : 기능을 단순화했습니다. 이전 버전이 어떻게 작동했는지 여기에서 살펴보십시오. http://adv-r.had.co.nz/OO-essentials.html#s3 나는 특수한 용도로 사용하기 위해 코딩 한 것을 깨달았습니다. 위의 내용은 대부분의 유스 케이스에 적합 할 것입니다 ... – Rentrop

+0

감사합니다. – methodds