〜 440 の Web ページから HTML テーブル データを読み取るループがあります。各ページのコードはまったく同じではないため、テーブル ノード 1 が必要な場合とノード 2 が必要な場合があります。現在、ノード番号を手動でリストに設定し、それをループに入れています。私の問題は、ページ ノードが変更され始め、ノード # リストの更新が面倒になってきていることです。
ループが間違ったノード番号 (つまり、2 ではなく 1、またはその逆) に遭遇すると、エラーが発生してシャットダウンします。エラーが発生した場合にループでエラーのあるノード番号を正しい番号に置き換え、何も起こらなかったかのようにループを実行し続ける方法はありますか?
ループ内のコードの readHTML 部分と URL の例を次に示します。
url <- "http://espn.go.com/nba/player/gamelog/_/id/2991280/year/2013/"
html.page <- htmlParse(url)
tableNodes <- getNodeSet(html.page, "//table")
x <- as.numeric(Players$Nodes[s])
tbl = readHTMLTable(tableNodes[[x]], colClasses = c("character"),stringsAsFactors = FALSE)
ノード番号が間違っている場合に発生するエラーは次のとおりです。
"readHTMLTable(tableNodes[[x]]、colClasses = c("character")、stringAsFactors = FALSE) のエラー: 関数 'readHTMLTable' のメソッドを選択する際に引数 'doc' を評価する際のエラー: tableNodes[[x のエラー] ]] : 範囲外の添字"
コード例:
A <- c("dog", "cat")
Nodes <- as.data.frame(1:1)
#)Nodes <- as.data.frame(1:2) <-- This works without errors
colnames(Nodes)[1] <- "Col1"
Nodes2 <- 2
url <-c("http://espn.go.com/nba/player/gamelog/_/id/6639/year/2013/","http://espn.go.com/nba/player/gamelog/_/id/6630/year/2013/")
for (i in 1:length(A))
{
html.page <- htmlParse(url[i])
tableNodes <- getNodeSet(html.page, "//table")
x <- as.numeric(Nodes$Col1[i])
df = readHTMLTable(tableNodes[[x]], colClasses = c("character"),stringsAsFactors = FALSE)
#tryCatch(df) here.....no clue
assign(paste0("", A[i]), df)
}