使用 R 进行网页抓取
web crawling using R
我正在尝试创建一个使用 R 进行爬网的数据集。
这是我的代码
ID <- "english-premier-league-transfers"
URL <- paste0("http://www.soccernews.com/soccer-transfers/", ID)
parsed.html <- htmlParse(URL)
targetPoint <-"//div[@id='wrapper']/div[@id='page']/div[@id='container']/div[@id='content']/div[@class='league-transfers']/div[@class='panes']"
playersList <- xpathSApply(parsed.html, targetPoint , xmlValue)
问题是我得到了一个大字符串,我需要一个 XML 数据集。
有人有什么想法吗?
我不知道你所说的 "XML data set" 到底是什么意思。如果你想要单独的节点,你可以尝试
playersList <- xpathSApply(parsed.html, targetPoint) # only xmlValue is missing
如果您想将姓名和其他详细信息作为单独的字符串,您可以这样做:
playersList <- xpathSApply(parsed.html, targetPoint, xmlChildren)
player.names <- sapply(playersList[,1], USE.NAMES = F, FUN = function (element) {
xmlValue(element[[1]][[1]])
})
这给了你名字。如果你想获得其他属性,请使用 element
:
之后的索引
player.positions <- sapply(playersList[,1], USE.NAMES = F, FUN = function (element) {
xmlValue(element[[1]][[3]])
})
[[2]][[1]]
给你国籍,[[3]][[1]]
给你"to"-团队等等...
编辑:当然,例如 data.frame(name = player.names, position = player.positions)
为您提供了一个很好的 R data.frame 抓取数据。还要注意此数据的潜在版权问题!
我正在尝试创建一个使用 R 进行爬网的数据集。 这是我的代码
ID <- "english-premier-league-transfers"
URL <- paste0("http://www.soccernews.com/soccer-transfers/", ID)
parsed.html <- htmlParse(URL)
targetPoint <-"//div[@id='wrapper']/div[@id='page']/div[@id='container']/div[@id='content']/div[@class='league-transfers']/div[@class='panes']"
playersList <- xpathSApply(parsed.html, targetPoint , xmlValue)
问题是我得到了一个大字符串,我需要一个 XML 数据集。 有人有什么想法吗?
我不知道你所说的 "XML data set" 到底是什么意思。如果你想要单独的节点,你可以尝试
playersList <- xpathSApply(parsed.html, targetPoint) # only xmlValue is missing
如果您想将姓名和其他详细信息作为单独的字符串,您可以这样做:
playersList <- xpathSApply(parsed.html, targetPoint, xmlChildren)
player.names <- sapply(playersList[,1], USE.NAMES = F, FUN = function (element) {
xmlValue(element[[1]][[1]])
})
这给了你名字。如果你想获得其他属性,请使用 element
:
player.positions <- sapply(playersList[,1], USE.NAMES = F, FUN = function (element) {
xmlValue(element[[1]][[3]])
})
[[2]][[1]]
给你国籍,[[3]][[1]]
给你"to"-团队等等...
编辑:当然,例如 data.frame(name = player.names, position = player.positions)
为您提供了一个很好的 R data.frame 抓取数据。还要注意此数据的潜在版权问题!