使用 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 抓取数据。还要注意此数据的潜在版权问题!