存在另一個問題。我有一個for循環,其中包含urls來從ID batting_gamelogs的表中刮取擊球信息。如果該頁面上不存在該ID,則繼續前進到下一個URL,然後刮擦表格。如果表格不存在,則循環跳過
我認爲它應該是這樣的下面的東西,但我不能得到它的工作。
if xpathSApply(batting, '//*[@id != "batting_gamelogs"]')[[1]] next
else
{
tableNode <- xpathSApply(batting, '//*[@id="batting_gamelogs"]')[[1]]
data <- readHTMLTable(tableNode, stringsAsFactors = FALSE)
data # select the first table
total <- cbind(id,year,data)
batlist <- rbind(batlist, total)
}
我附上示例代碼。
#SCRAPE BATTING STATS
data = NULL
batlist = NULL
battingURLs <- paste("http://www.baseball-reference.com",yplist[,c("hrefs")],sep="")
for(thisbattingURL in battingURLs){
batting <- htmlParse(thisbattingURL)
fstampid <- regexpr("&", thisbattingURL, fixed=TRUE)-1
fstampyr <- regexpr("year=", thisbattingURL, fixed=TRUE)+5
id <- substr(thisbattingURL, 53, fstampid)
year <- substr(thisbattingURL, fstampyr, 75)
tableNode <- xpathSApply(batting, '//*[@id="batting_gamelogs"]')[[1]]
data <- readHTMLTable(tableNode, stringsAsFactors = FALSE)
data # select the first table
total <- cbind(id,year,data)
batlist <- rbind(batlist, total)
}
batlist
任何幫助非常感謝!
感謝@LarsH的幫助,真的很感激它!您的帖子完全合理,但我現在收到2個錯誤, 1在xpathSApply * code * + if! xpathSApply(batting,'// * [@ id =「batting_gamelogs」]')[[1]]下一個 錯誤:意外的'!'在: 「! 如果」 *代碼* 和最後} *碼*>} 錯誤:意外 '}' 在 「}」 *代碼* 對不起,如果我忽略了一些真正愚蠢的,我是R語言的新手。再次感謝! –
@唐:我也是R新人......我更喜歡XPath。所以,對錯誤表示歉意,並感謝發佈錯誤消息。我已經將上述內容更新爲更有可能起作用的東西,但是我沒有測試R的環境。所以如果它仍然不起作用,我沒有真正裝備來解決問題的R方面。所需要的是測試xpathSApply()的輸出並確定是否返回任何內容。 – LarsH
@唐:再次更新我的答案基於http://stackoverflow.com/a/25503686/423105 – LarsH