Очистка таблицы с несколькими заголовками в R с использованием любого пакета?(XML, rCurl, rlist htmltab, rvest и т. Д.) - PullRequest
1 голос
/ 13 мая 2019

Я пытаюсь почистить эту таблицу http://www.hko.gov.hk/cis/dailyExtract_e.htm?y=1999&m=1

Вот все мои попытки. Никто из них даже близко не подошел к извлечению информации. Я что-то пропустил?


library("rvest")
library("tidyverse")
# METHOD 1
url <- "http://www.hko.gov.hk/cis/dailyExtract_e.htm?y=1999&m=1"

data <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="t1"]/tbody/tr[1]') %>%
  html_table()

data <- data[[1]]

# METHOD 2

library(XML)
library(RCurl)
library(rlist)
theurl <- getURL("http://www.hko.gov.hk/cis/dailyExtract_e.htm?y=1999&m=1",.opts = list(ssl.verifypeer = FALSE) )
tables <- readHTMLTable(theurl)
tables <- list.clean(tables, fun = is.null, recursive = FALSE)
n.rows <- unlist(lapply(tables, function(t) dim(t)[1]))
tables[[which.max(n.rows)]]


# METHOD 3 
library(htmltab)
tab <- htmltab("http://www.hko.gov.hk/cis/dailyExtract_e.htm?y=1999&m=1",
               which = '//*[@id="t1"]/tbody/tr[4]',
               header = '//*[@id="t1"]/tbody/tr[3]',
               rm_nodata_cols = TRUE)

# METHOD 4
website <-read_html("http://www.hko.gov.hk/cis/dailyExtract_e.htm?y=1999&m=1")
scraped <- website %>%
  html_nodes("table") %>%
  .[(2)] %>%
  html_table(fill = TRUE) %>%
  `[[`(1) 


# METHOD 5

getHrefs <- function(node, encoding) 
  if (!is.null(xmlChildren(node)$a)) { 
    paste(xpathSApply(node, './a', xmlGetAttr, "href"), collapse = ",")
  } else {
    return(xmlValue(xmlChildren(node)$text))
  }
data <- ( readHTMLTable("http://www.hko.gov.hk/cis/dailyExtract_e.htm?y=1999&m=1", which = 1, elFun = getHrefs)  )


Ожидаемыми результатами должны быть 12 имен столбцов в таблице и данные ниже

...