2017-11-14 11 views
0

問題があります。私はウェブサイトから情報を抽出する必要があります:https://www.transfermarkt.co.uk/premier-league/startseite/wettbewerb/GB1クラブの名前、ウェブサイトのアドレス(transfermarktのプロフィール)、チームのプロフィールからスタジアムの名前。これがウェブサイトからのデータ抽出に関する私の最初の連絡です。どんな助けもありがたい。最初に私はそのようなコードを書いた:htmlテーブルをRデータフレームにスクラップ

library(rvest) 
theurl <- "https://www.transfermarkt.co.uk/premier-league/startseite/wettbewerb/GB1" 
file<-read_html(theurl) 
tables<-html_nodes(file, "table") 
table1 <- html_table(tables[4], fill = TRUE) 
+0

正確に必要なパラメータは? "PREMIER LEAGUE 17/18のクラブ"のテーブル? –

+0

html_nodes(ファイル、 "テーブル")%>%html_nodes(href)を見ることができるならば、それは正規表現の問題です –

+0

私はチームのプロフィールからクラブ、ウェブサイトのクラブとスタジアムの名前でテーブルが必要です。 – Kim

答えて

0

@Henry Navarroが指摘したように、どのノードなどが正確に必要なのかは明らかではない。正しいノードを見つけることは時間がかかる作業なので、必要なノードを指定する必要があります。この目的でSelectorgadgetを使用できます。

次の簡単な例では、情報を抽出するためにrvestを使用してループするチームWebサイトのリストを生成する方法を示します。これまでに欠落していた主な機能はhtml_attr()です(例:answer)。もちろん、これらのサイトのノードを見つけてスタジアムなどの情報を抽出する必要があります。

file %>% 
html_nodes("table") %>% 
{ .[4]} %>% 
html_nodes("a") %>% 
html_attr("href") %>% 
{ .[grep("/startseite/verein",., fixed=T)]} %>% 
unique() %>% 
{ paste0("https://www.transfermarkt.co.uk", .) } 

# [1] "https://www.transfermarkt.co.uk/fc-chelsea/startseite/verein/631/saison_id/2017"    
# [2] "https://www.transfermarkt.co.uk/manchester-city/startseite/verein/281/saison_id/2017"   
# [3] "https://www.transfermarkt.co.uk/manchester-united/startseite/verein/985/saison_id/2017"   
# [4] "https://www.transfermarkt.co.uk/tottenham-hotspur/startseite/verein/148/saison_id/2017" 
#... 
+0

それはまさに私が意味したことです、ありがとう。これらのクラブのスタジアムについて知るにはどうすればよいですか? – Kim

+0

ブラウザでスクレイプした "startseite"サイトの1つに移動します。次に、このサイトのSelectorgadgetを使用して、抽出するノード、つまりスタジアムに関する情報がどこにあるかを特定します。これは他のすべてのクラブ(クラブの名前を考慮する必要があるかもしれない)のリンク構造が同じでなければなりません。この情報を使用すると、掻きする必要があるすべてのページのループを作成できます。しかし、思慮深く、ウェブサイトの条件を尊重して、短時間で大量のトラフィックを作成する多くのサイトを掻き集めるならば、生成されたトラフィックを減らすためにスクリプトに一時停止を追加するかもしれません。 –

関連する問題