抓取HTML(或JavaScript)表

抓取HTML(或JavaScript)表,javascript,html,r,web-scraping,html-table,Javascript,Html,R,Web Scraping,Html Table,我试图在一个网站上取消一张桌子,但没有成功。。。我已经做了很多次了,它总是有效的,但自从那时起,表似乎是在某种Javascript中,解析根本不起作用?有人能帮我吗 这一页是 我已经试过了: readHTMLTable(doc//table[@id='live-player-home-offensive-grid'], as.data.frame=TRUE, header=FALSE) # or xpathSApply(pagetree, "//*/table[@id='live-player-

我试图在一个网站上取消一张桌子,但没有成功。。。我已经做了很多次了,它总是有效的,但自从那时起,表似乎是在某种Javascript中,解析根本不起作用?有人能帮我吗

这一页是

我已经试过了:

readHTMLTable(doc//table[@id='live-player-home-offensive-grid'], as.data.frame=TRUE, header=FALSE)
# or
xpathSApply(pagetree, "//*/table[@id='live-player-home-offensive-grid']", xmlValue)

问题在于数据不在表中,而是在Javascript代码中-- 只有在浏览器中呈现页面时,才会将其放入表中

我看不到一个干净的提取方法, 缺少使用JavaScript工具或web浏览器控制器 (, , , )

以下内容将HTML页面作为字符串读取, 并查找
initialData
变量的定义, 这显然包含了数据。 它以相同的难以使用的格式返回数据, 列表列表的列表列表的列表

library(RCurl)
url <- "http://www.whoscored.com/Matches/411429/LiveStatistics/England-Premier-League-2010-2011-Fulham-Arsenal"
html <- getURL(url)
initial_data <- gsub("^.*?initialData = (.*?);.*", "\\1", html)
initial_data <- gsub("'", '"', initial_data)
library(RJSONIO)
data <- fromJSON( initial_data )
库(RCurl)

url问题在于数据不在表中,而是在Javascript代码中-- 只有在浏览器中呈现页面时,才会将其放入表中

我看不到一个干净的提取方法, 缺少使用JavaScript工具或web浏览器控制器 (, , , )

以下内容将HTML页面作为字符串读取, 并查找
initialData
变量的定义, 这显然包含了数据。 它以相同的难以使用的格式返回数据, 列表列表的列表列表的列表

library(RCurl)
url <- "http://www.whoscored.com/Matches/411429/LiveStatistics/England-Premier-League-2010-2011-Fulham-Arsenal"
html <- getURL(url)
initial_data <- gsub("^.*?initialData = (.*?);.*", "\\1", html)
initial_data <- gsub("'", '"', initial_data)
library(RJSONIO)
data <- fromJSON( initial_data )
库(RCurl)

实际上,这很有帮助!从那时起,我可以取消数据列表,剩下一个相当长的向量,包含我想要的所有数据。从那以后,我把它放到data.frame中,我有一个1列,5k+行的数据框。如果有人能帮我做到这一点,那就差不多了:在转换为data.frame时,我如何告诉R我需要多少列?我的“士官”没有成功。再次感谢大家!问题是这些列表嵌套得很深,并且长度不同。您可以通过查看
cat(toJSON(data))
cat(toJSON(data[[1]])
cat(data[[1]][[1]])
等来理解数据的结构。以下内容似乎很有意义,也很容易使用,但我可能丢弃了太多数据:
lapply(data[[1]][[2]][[1]][[5]],function(u)c(“name”,u[[2]],未列出(u[[4]])
。实际上,这很有帮助!从那时起,我可以取消数据列表,剩下一个相当长的向量,包含我想要的所有数据。从那以后,我把它放到data.frame中,我有一个1列,5k+行的数据框。如果有人能帮我做到这一点,那就差不多了:在转换为data.frame时,我如何告诉R我需要多少列?我的“士官”没有成功。再次感谢大家!问题是这些列表嵌套得很深,并且长度不同。您可以通过查看
cat(toJSON(data))
cat(toJSON(data[[1]])
cat(data[[1]][[1]])
等来理解数据的结构。以下内容似乎很有意义,也很容易使用,但我可能丢弃了太多数据:
lapply(data[[1]][[2]][[1]][[5]],function(u)c(“name”,u[[2]],未列出(u[[4]])