编程的新手,并尝试从下面的站点剪贴数据。当我运行以下代码时,它将返回一个空的数据集或表。任何帮助或替代方案将不胜感激。
n
尝试使用xpath和相同的结果,并且html_table()而不是文本返回错误,该错误没有适用于“ html_table”的适用于“ xml_missing”类对象的适用方法。
答案 0 :(得分:1)
正如Mislav所说,该表是用JavaScript生成的,所以最好的选择是RSelenium
。
此外,如果要获取表,则使用html_table()
可以用更少的代码来获取它。
我的尝试:
# Load packages
library(rvest) #Loading the rvest package
library(magrittr) # for the '%>%' pipe symbols
library(RSelenium) # to get the loaded html of the webpage
# starting local RSelenium (this is the only way to start RSelenium that is working for me atm)
selCommand <- wdman::selenium(jvmargs = c("-Dwebdriver.chrome.verboseLogging=true"), retcommand = TRUE)
shell(selCommand, wait = FALSE, minimized = TRUE)
remDr <- remoteDriver(port = 4567L, browserName = "chrome")
remDr$open()
# define url
url <- "https://fasttrack.grv.org.au/Dog/Form?id=2003010003"
# go to website
remDr$navigate(url)
# as it's being loaded with JavaScript and it has a slow load, add a sleep here
Sys.sleep(10) # increase as needed
# get the html object of the webpage
html_obj <- remDr$getPageSource(header = TRUE)[[1]] %>% read_html()
# read the table in the html_obj
tab <- html_obj %>% html_table() %>% .[[1]]
希望有帮助!但是,在进行操作之前,请务必先检查网页是否允许抓取! 选中Terms and conditions:
除非直接用于查看,打印,访问或 与网站交互以供您个人使用或用作 网站或这些条款和条件中另有说明,您 不得复制,复制,修改,与公众交流,改编, 传输,分发,下载或存储Web的任何内容 网站(包括如下所述的比赛信息),或包含 无需编写GRV即可将网站的任何部分转换为另一个网站 同意。