2017-10-18 6 views
0

私はRでウェブスクレイピングをする方法を学んでいます。この場合、私はパッケージ "rvest"とfollow_linkという特定の関数を使用しています。Rのfollow_linkでこのリンクをスクラップする方法は?

アイデアは、複数のリンクを持つウェブページの情報を取得することです。私は自分のコードをそれらのリンクに入れて、そこにあるテーブルを取得したい。

これはコードです:

library(rvest) 
s <- html_session("http://fccee.uvigo.es/es/profesorado.html") 
link <- c("Dereito Privado", "Economia Financieira e Contabilidade", "Matemáticas", 
     "Estadística e Investigación Operativa", "Economía Aplicada", "Fundamentos da Análise Ec. e Hª e Institucións Económicas", 
     "Informática", "Organización de Empresas e Marketing", "Socioloxía, Ciencia Política e da Administración e Filosofía") 
n <- length(link) #number of pages 
datos <- list() 
for (i in 1:n){ 

    s <- s %>% follow_link(link[i]) 
    datos[[(i)]] <- s %>% html_nodes(".lista_fccee") %>% html_table() 
    s <- s %>% back()} 

問題は、私はこのエラーを取得することです:ませリンクは、テキスト 'Matemáticas'を持っていません。 最初の2つのリンクが問題なく通過するので、問題はテキストのアクセント記号と関連していると思います。

これは非常に基本的な質問かもしれませんが、この特定のエラーに関する情報は見つかりませんでした。

ありがとうございます!

+0

電子メールの迷惑メールリストまたはその機関と関係のない電子メールディレクトリを構築するために、これらのページを傷つけないでください。私が目にする顕著な情報がすべて名前と電子メールアドレスであると、私は非常に疑念を抱いています。 – hrbrmstr

+0

それは私の意図ではありません。私はその大学で勉強して、そのウェブページを選んでスクレイプする例を選んだのです。 –

答えて

2

あなたが疑うように、問題は特殊文字(アクセント記号付きのa)です。あなたは、Rは、このコードでリンク名を見てどのように見ることができます:

library(rvest) 
top_url = "http://fccee.uvigo.es/es/profesorado.html" 
page = read_html(top_url) 
links = page %>% html_nodes("a") %>% html_text() 
links 
#> ... 
#> [44] "Matemáticas" 
#> ... 

これは私が対処する方法を見つけ出すことができない複雑なエンコードの問題されて終わります。したがって、代わりに、データを取得する別の方法があります。

library(rvest) 
top_url = "http://fccee.uvigo.es/es/profesorado.html" 
page = read_html(top_url) 
links = page %>% 
    html_nodes(".listado_fccee li a") %>% 
    html_attr("href") 
datos <- list() 
for(i in links){ 
    datos[[length(datos)+1]] <- i %>% 
    paste0("http://fccee.uvigo.es",.) %>% 
    read_html() %>% 
    html_nodes(".lista_fccee") %>% 
    html_table() 
} 

、あなたが最初のページで読む代わりにセッションを使用しての、部門のリンクを持っているのdivクラスlistado_fcceeからすべてのリンクを抽出します。その後、各リンクを読んで、前と同じようにテーブルをフェッチしてリストに追加します。

関連する問題