2017-02-02 12 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()をドキュメント階層の上位に使いたい別のユースケースがあります。その結果、1つのベクトル要素内で複数のテキストが結合されます。これにより、対応する部品の開始および終了を推測することが不可能になる。

答えて

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

関連する問題