我无法将HTML表读入R中,从而将超链接保存在表格的单元格中。我找到了这个解决方案(Extract links from html table),但我相信第二个答案中提供的功能仅在HTML表格中包含单个列的链接时起作用,而我无法找到使其适用于表格的解决方案多列中的链接。
例如,我想从;
中提取表格http://www.sports-reference.com/olympics/countries/NED/
但是我不想仅使用XML中的基本readHTMLTable
函数,而是想知道如何构造一个函数放入elFun
部分,以便第一行看起来可以包含而不是“ 2014年冬季“将包含”/奥运会/国家/ NED /冬季/ 2014 /“。
此外,我想在每个单元格中保留多个链接,如Top Medalists的第三行。
谢谢!
答案 0 :(得分:1)
也许以此为出发点:
library(XML)
getHrefs <- function(node, encoding)
if (!is.null(xmlChildren(node)$a)) {
paste(xpathSApply(node, './a', xmlGetAttr, "href"), collapse = ",")
} else {
return(xmlValue(xmlChildren(node)$text))
}
head( readHTMLTable("http://www.sports-reference.com/olympics/countries/NED/", which = 1, elFun = getHrefs) )
# Rk Games Flag Bearer Participants Men Women Sports Gold Silver Bronze Total Top Medalist(s)
# 1 1 /olympics/countries/NED/winter/2014/ /olympics/athletes/te/jorien-ter-mors-1.html 39 20 19 4 8 7 9 24 /olympics/athletes/wu/ireen-wust-1.html
# 2 2 /olympics/countries/NED/summer/2012/ /olympics/athletes/va/dorian-van-rijsselberge-1.html 173 94 79 19 6 6 8 20 /olympics/athletes/kr/ranomi-kromowidjojo-1.html
# 3 3 /olympics/countries/NED/winter/2010/ /olympics/athletes/be/timothy-beck-1.html 32 15 17 4 4 1 3 8 /olympics/athletes/kr/sven-kramer-1.html,/olympics/athletes/tu/mark-tuitert-1.html
# 4 4 /olympics/countries/NED/summer/2008/ /olympics/athletes/de/jeroen-delmee-1.html 237 139 98 20 7 5 4 16 /olympics/athletes/va/anky-van-grunsven-1.html
# 5 5 /olympics/countries/NED/winter/2006/ /olympics/athletes/bo/jan-bos-1.html 33 16 17 4 3 2 4 9 4 athletes with 2 medals
# 6 6 /olympics/countries/NED/summer/2004/ /olympics/athletes/hu/mark-huizinga-1.html 210 134 76 22 4 9 9 22 /olympics/athletes/de/inge-de-bruijn-1.html