2017-03-17 8 views
0

htmlページを解析しようとすると、NA値を取得できます。したがって、リスト内のデータを含むデータフレームを作成しようとすると、値がないと不可能になります。htmlページを解析してデータフレームを作成する際に、NA値を置き換える方法は?

成功する方法はありますか?

library(rvest) 
library(RCurl) 
library(XML) 

pg <- getURL("https://agences.axa.fr/ile-de-france/paris/paris-19e-75019") 
page = htmlTreeParse(pg,useInternal = TRUE,encoding="UTF-8") 
unlist(xpathApply(page,'//b[@class="Name"]',xmlValue)) 
data.frame(noms = unlist(xpathApply(page,'//b[@class="Name"]',xmlValue)), 
      rue = unlist(xpathApply(page,'//span[@class="street-address"]',xmlValue))) 
+0

あなたは 'html_nodes'ではなく' html_node'を使用しているからです。また、ここではRCurlは不要です。 URLを 'read_html'に直接渡すことができます。 – alistaire

+0

@alistaireありがとう、私は最初のものが愚かなものだったので私の質問を変更しました。この質問については、私はすでに同様の質問をしています:http://stackoverflow.com/questions/42588717/how-to-return-na-when-nothing-is-found-in-an-xpath、他の質問に対するあなたの答えに基づいて解決策を見つけることができます。 –

+0

良い質問です。ただし、XMLの読み込みを再現性のために表示する必要があります。 – alistaire

答えて

0

library(rvest) 
library(purrr) 

# be nice, only scrape once 
h <- 'https://agences.axa.fr/ile-de-france/paris/paris-19e-75019' %>% read_html() 

df <- h %>% 
    # select each list item 
    html_nodes('div.ListConseiller li') %>% 
    # for each item, make a list of parsed name and street; coerce results to data.frame 
    map_df(~list(nom = .x %>% html_node('b.Name') %>% html_text(), 
       rue = .x %>% html_node('span.street-address') %>% html_text(trim = TRUE))) 

df 
#> # A tibble: 14 × 2 
#>       nom      rue 
#>      <chr>     <chr> 
#> 1   Marie France Tmim     <NA> 
#> 2    Rachel Tobie     <NA> 
#> 3    Bernard Licha     <NA> 
#> 4    David Giuili     <NA> 
#> 5  Myriam Yajid Khalfi     <NA> 
#> 6    Eytan Elmaleh     <NA> 
#> 7   Allister Charles     <NA> 
#> 8    Serge Savergne 321 Rue De Belleville 
#> 9   Patrick Allouche   1 Rue Clavel 
#> 10    Anne Fleiter 14 Avenue De Laumiere 
#> 11    Eric Fitoussi     <NA> 
#> 12 Jean-Baptiste Crocombette 1 Bis Rue Emile Desvaux 
#> 13    Eric Zunino 14 Rue De Thionville 
#> 14    Eric Hayoun     <NA> 

コードがためにCSSセレクタを使用して、(ペア非常にうまくrvest付きリスト/関数型プログラミングのためのtidyverseパッケージ)rvestとpurrrを使用して次の例を参照してください。あなたが好きな場合は、のパラメータがhtml_nodeshtml_nodeのXPathのものを使用してください。

+0

@alistaireありがとうございました、今私は理解し始めます。そして、xpathを使うこともできます: 'xpath = '// div [@ class =" ListConseiller "] // li'' :) –

+0

おそらく私はこの質問を削除、それはここで同じです:http://stackoverflow.com/questions/42588717/how-to-return-na-when-nothing-is-found-in-an-xpath –

+0

これは動作しませんか? '%b%@ html_nodes(xpath =' // b [@ class = "Name"] ')%>%df <- h %>% html_nodes(' div.ListConseiller li ')%>% map_df %html_text()、%html_text()、 rue = .x%>%html_nodes(xpath = '//スパン[@クラス= "ストリートアドレス"]')%>%html_text(trim = TRUE))) 'xpath'と同等の方法ですか? –

関連する問題