在 R 中读取 html table

read html table in R

我正在尝试使用包 XML.

从 R 中的 tennis abstract 网页读取 head2head 数据

我要底部的大h2htable,
css 选择器: html > body > div#main > table#maintable > tbody > tr > td#stats > table#matches.tablesorter

我已尝试遵循 scraping html into r data frame 的建议。
我相信困难是由 table 在 table

中引起的
url = "http://www.tennisabstract.com/cgi-bin/player.cgi?p=NovakDjokovic&f=ACareerqqs00&view=h2h"
library(RCurl)
library(XML)

webpage <- getURL(url)
webpage <- readLines(tc <- textConnection(webpage)); close(tc)  #doesnt have the h2h table
pagetree <- htmlTreeParse(webpage, error=function(...){}, useInternalNodes = TRUE)
results <- xpathSApply(pagetree, "//*/table[@class='tablesorter']/tr/td", xmlValue)  # gives NULL

tables <- readHTMLTable( url,stringsAsFactors=T) # has 4 tables, not the desired one

我是html解析新手,请多多包涵。

这不是最有效的,但可以完成工作。

library(rvest)
library(RSelenium)

tennis.url <- "http://www.tennisabstract.com/cgi-bin/player.cgi?p=NovakDjokovic&f=ACareerqqs00&view=h2h"

checkForServer(); startServer()
remDrv <- remoteDriver()
remDrv$open()

remDrv$navigate(tennis.url)
tennis.html <- html(remDrv$getPageSource()[[1]])

remDrv$close()

H2Hs <- tennis.html %>% html_nodes(".h2hclick") %>% html_text %>% as.numeric
Opponent <- tennis.html %>% html_nodes("#matches a") %>% html_text
Country <- tennis.html %>% html_nodes("a+ span") %>% html_text %>% gsub("[^(A-Z)]", "", .)
W <- tennis.html %>% html_nodes("#matches td:nth-child(3)") %>% .[-1] %>% html_text %>% as.numeric
L <- tennis.html %>% html_nodes("#matches td:nth-child(4)") %>% .[-1] %>% html_text %>% as.numeric
Win.Prc <- tennis.html %>% html_nodes("#matches td:nth-child(5)") %>% .[-1] %>% html_text

以此类推。您只需要在 nth-child(#) 中增加 # 然后创建一个数据框。