複数のURLを実行して各テーブルのデータをスクラップし、すべてを1つのデータフレームに連結する動的ループを作成しようとしています。私は以下に示すようにいくつかのアイデアを試しましたが、これまでに何もできませんでした。この種のものは実際に私の運転手ではありませんが、私はこれがどのように機能するかを学ぼうとしています。もし誰かがこれをやるのを助けることができたら、私は本当にそれを感謝します。HTMLテーブルをループしてデータフレームを作成しようとしています
ありがとうございます。
library(rvest)
#create a master dataframe to store all of the results
complete<-data.frame()
yearsVector <- c("2010", "2011", "2012", "2013", "2014", "2015")
positionVector <- c("qb", "rb", "wr", "te", "ol", "dl", "lb", "cb", "s")
for (i in 1:length(yearsVector))
{
for (j in 1:length(positionVector))
{
# create a url template
URL.base<-"http://www.nfl.com/draft/"
URL.intermediate <- "/tracker?icampaign=draft-sub_nav_bar-drafteventpage-tracker#dt-tabs:dt-by-position/dt-by-position-input:"
#create the dataframe with the dynamic values
URL <- paste0(URL.base, yearsVector, URL.intermediate, positionVector)
#print(URL)
#read the page - store the page to make debugging easier
page<- read_html(URL)
#This needs work since the page is dynamicly generated.
DF <- html_nodes(page, xpath = ".//table") %>% html_table(fill=TRUE)
#About 530 names returned, may need to search and extracted requested info.
# to find the players last names
lastnames<-str_locate_all(page, "lastName")[[1]]
names<- str_sub(page, lastnames[,2]+4, lastnames[,2]+20)
names<-str_extract(names, "[A-Z][a-zA-Z]*")
length(names[-c(1:16)])
#Still need to delete the first 16 names (don't know if this is consistent across all years
#to find the players positions
positions<-str_locate_all(page, "pos")[[1]]
ppositions<- str_sub(page, positions[,2]+4, positions[,2]+10)
pos<-str_extract(ppositions, "[A-Z]*")
pos<- pos[pos !=""]
#Still need to clean delete the first 16 names (don't know if this is consistent across all years
#store the temp values into the master dataframe
complete<-rbind(complete, DF)
}
}
私はあなたのコードデイブを組み込むために、私のOPを編集しました。私はほとんどそこにいると思うが、ここには何かがない。私はこのエラーが発生しています。 evalの中
エラー(代替(expr)は、ENVIR、enclos):単一の値
を期待しては、私が知っているURLは正しいです!
http://postimg.org/image/ccmvmnijr/
私はこの問題は、この行であると思う:
page <- read_html(URL)
それとも、多分この行:
DF <- html_nodes(page, xpath = ".//table") %>% html_table(fill = TRUE)
あなたは私がここでフィニッシュラインを介して得るのを助けることができますか?ありがとう!
これは視覚的には素晴らしいようですが、私のためには実行されません。 'エラー:単一の値を期待しています' 私はサービス違反の条件を認識しておらず、これを定期的に使用するつもりはありません。私は単にそのコンセプトを想像し、この仕組みを学べば、他の多くの(関連性のある、無関係な)ものを手伝ってくれます。 もう一度、スクリプトは私のために機能しません。私はMS Visual StudioとR Studioでこれを試しました。上記と同じ結果が得られました。このスクリプトはどのように動作させることができますか? –
上記の改訂コードが有効です。 – Dave2e
WOW !!非常に素晴らしい!!私はこのコードに完全に必要です。私はそれの約3/4を理解していますが、間違いなくそのすべてではありません。 これがどのように機能するかを私に見せてくれてありがとう。 –