2016-10-19 19 views
1

私はウェブスクレイピングに慣れていないし、複数のウェブページ上のテーブルを削っている。ここにサイトがあります:http://www.baseball-reference.com/teams/MIL/2016.shtml複数のウェブページ上のRテーブルを掻き集めるR

rvestを使って、簡単に1ページでテーブルを削ることができます。そこ複数のテーブルがありますが、私は最初のものだけをこすりしたかった、ここに私のコードがある

library(rvest) 
url4 <- "http://www.baseball-reference.com/teams/MIL/2016.shtml" 

Brewers2016 <- url4 %>% read_html() %>% 
html_nodes(xpath = '//*[@id="div_team_batting"]/table[1]') %>% 
html_table() 

Brewers2016 <- as.data.frame(Brewers2016) 

問題は、私は戻って1970年に、ページのデートの最初のテーブルをこすりすることを指定するリンクがありますされます前年はテーブルの真上の左上隅にあります。誰が私がこれをどうやってできるか知っていますか?

私は、これを行うさまざまな方法、例えば、より効果的かもしれないrvest以外のパッケージにもオープンしています。それが私が学習を始めたので、私はrvestを使いました。

+0

完璧なdupを見つけるためにそれらを選別するつもりはありませんが、単純にhttp:// stackoverflowを検索しただけで複数の答えがあります。 com/search?q =%5Br%5D + http%3A%2F%2Fwww.baseball-reference.com%2F – hrbrmstr

答えて

5

一つの方法は、のベクトルを作ることであろうすべてのurlsに興味がありますし、その後sapplyを使用します。

library(rvest) 

years <- 1970:2016 
urls <- paste0("http://www.baseball-reference.com/teams/MIL/", years, ".shtml") 
# head(urls) 

get_table <- function(url) { 
    url %>% 
    read_html() %>% 
    html_nodes(xpath = '//*[@id="div_team_batting"]/table[1]') %>% 
    html_table() 
} 

results <- sapply(urls, get_table) 

resultsは47個のdata.frameオブジェクトのリストでなければなりません。それぞれの名前は、それが表すurl(つまり、年)で名前を付ける必要があります。つまり、results[1]は1970に対応し、results[47]は2016に対応します。

+0

驚くばかり!本当にありがとう! – Julien

関連する問題