rvest r数据抓取返回空表

时间:2018-09-09 01:17:05

标签: r web-scraping rvest

编程的新手,并尝试从下面的站点剪贴数据。当我运行以下代码时,它将返回一个空的数据集或表。任何帮助或替代方案将不胜感激。

n

尝试使用xpath和相同的结果,并且html_table()而不是文本返回错误,该错误没有适用于“ html_table”的适用于“ xml_missing”类对象的适用方法。

1 个答案:

答案 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即可将网站的任何部分转换为另一个网站   同意。