2016-05-12 9 views
3

イムページhttps://en.wikipedia.org/wiki/UEFA_Euro_2012_squadsをこすりしようとオフの微rvestスクレープのURL

library(plyr) 
library(XML) 
library(rvest) 
library(dplyr) 
library(magrittr) 
library(data.table) 

for(i in 1:16) 
{ 
float <- paste("squad", i, sep ="") 
print(float) 
html = read_html("https://en.wikipedia.org/wiki/UEFA_Euro_2012_squads") 
assign(float, html_table(html_nodes(html, "table")[[i]])) 
} 

を使用してテキストデータを取ることができますが、また、各テーブルのURLでこれに余分な列を追加したいと思いますクラブのために。例えばチーム1(初回のみ5人の選手を表示するように切り捨てページに磨き隊、)

 0#0 Pos.    Player     Date of birth (age) Caps Goals    Club 
1 1 1GK Wojciech Szczęsny (1990-04-18)18 April 1990 (aged 22) 11  0    Arsenal 
2 2 2DF Sebastian Boenisch (1987-02-01)1 February 1987 (aged 25) 9  0  Werder Bremen 
3 3 2DF Grzegorz Wojtkowiak (1984-01-26)26 January 1984 (aged 28) 19  0  Lech Poznań 
4 4 2DF Marcin Kamiński (1992-01-15)15 January 1992 (aged 20) 3  0  Lech Poznań 
5 5 3MF  Dariusz Dudka (1983-12-09)9 December 1983 (aged 28) 65  2    Auxerre 
6 6 3MF  Adam Matuszczyk (1989-02-14)14 February 1989 (aged 23) 20  1 Fortuna Düsseldorf 

のために、私はそのクラブのために、ウィキペディアのURLを示すだろう「clubURL」のための「クラブ」の後に列をしたいと思います。

0#0 Pos.    Player     Date of birth (age) Caps Goals Club 
1 1 1GK Wojciech Szczęsny (1990-04-18)18 April 1990 (aged 22) 11  0 Arsenal 
            clubURL 
1 https://en.wikipedia.org/wiki/Arsenal_F.C. 

などの上など:たとえば、最初のプレーヤーはとてもアーセナルのためにテーブルの上にリンクを取り、作成するために、アーセナルのために果たしています。私はrvest table scraping including linksを見つけましたが、その例がうまくいかないし、私がしたいことも得られませんでした。それは他の場所で依頼されていた場合申し訳ありませんが、

おかげで、

答えて

4

は、私は、ページ上の最初のテーブルを使用した例を作りました。必要に応じてこれを拡張することができます。

最初に、最初のテーブルを取得し、html_tableを使用して保存します。次に、リンクテキストを指定して、テーブルからリンクを抽出するヘルパー関数を作成しました。次に、sapplyを使用して、データフレームに新しい列を設定しました。

library("rvest") 
url <- "https://en.wikipedia.org/wiki/UEFA_Euro_2012_squads" 
mytable <- read_html(url) %>% html_nodes("table") %>% .[[1]] 
df <- mytable %>% html_table() 

get_link <- function(html_table, team){ 
    html_table %>% 
    html_nodes(xpath=paste0("//a[text()='", team, "']")) %>% 
    .[[1]] %>% 
    html_attr("href") 
} 

df$club_link <- sapply(df$Club, function(x)get_link(mytable, x)) 
> head(df) 
    0#0 Pos.    Player 
1 1 1GK Wojciech Szczęsny 
2 2 2DF Sebastian Boenisch 
3 3 2DF Grzegorz Wojtkowiak 
4 4 2DF Marcin Kamiński 
5 5 3MF  Dariusz Dudka 
6 6 3MF  Adam Matuszczyk 
        Date of birth (age) Caps Goals 
1 (1990-04-18)18 April 1990 (aged 22) 11  0 
2 (1987-02-01)1 February 1987 (aged 25) 9  0 
3 (1984-01-26)26 January 1984 (aged 28) 19  0 
4 (1992-01-15)15 January 1992 (aged 20) 3  0 
5 (1983-12-09)9 December 1983 (aged 28) 65  2 
6 (1989-02-14)14 February 1989 (aged 23) 20  1 
       Club      club_link 
1    Arsenal   /wiki/Arsenal_F.C. 
2  Werder Bremen  /wiki/SV_Werder_Bremen 
3  Lech Poznań  /wiki/Lech_Pozna%C5%84 
4  Lech Poznań  /wiki/Lech_Pozna%C5%84 
5    Auxerre    /wiki/AJ_Auxerre 
6 Fortuna Düsseldorf /wiki/Fortuna_D%C3%BCsseldorf 
+0

ご利用いただきありがとうございます –