r语言 - 如何读取列和标题不匹配的 HTML 表?



HTML 表体的列比表头中定义的多 1 列。这会导致跳过最后一列,当然还有列不匹配。如何在使用 HTML 表中读取 HTML 表时将附加列添加到 R 中的结果 data.frame/tablepackage("htmltab")显然,后处理无济于事。

下面是一个示例:

法典

install.packages("htmltab")
library(htmltab)
bu<- 0
bu <- data.table("Pl.", "Mannschaft", "Kurzname" ,  "Spiele", "G.", "U.", "V.", "Tore", "Diff.", "Pkt.")
#https://www.bundesliga-prognose.de/1/2009/1/
url <- "https://www.bundesliga-prognose.de/1/2009/1/"
bu <- htmltab(doc = url,  column=10,columnnames=c ("Pl." ,  "Mannschaft", "Kurzname" , "Spiele", "G.", "U.", "V.", "Tore", "Diff.", "Pkt."), which = "//th[text() = 'Pl.']/ancestor::table")
bu <- data.table(bu)
head(bu)

这导致

Pl.            Mannschaft        Spiele G. U. V. Tore Diff. Pkt.
1:  1.         VfL Wolfsburg     Wolfsburg  1  1  0    0   2:0    2
2:  2.   Eintracht Frankfurt  E. Frankfurt  1  1  0    0   3:2    1
3:  3.         FC Schalke 04 FC Schalke 04  1  1  0    0   2:1    1
4:  4.     Borussia Dortmund   B. Dortmund  1  1  0    0   1:0    1
5:  NA     Hertha BSC Berlin H. BSC Berlin  1  1  0    0   1:0    1
6:  6. Bor. Mönchengladbach   M´gladbach  1  0  1    0   3:3    0
由于标题中未指定短名称(">

Kurzname"),因此短名称(">Kurzname")与游戏(Spiele)列一起显示,依此类推。因此,跳过最后一列。 如何在使用htmltab包读取标头时添加额外的列短名称(">Kurzname")? 此外,我想使用htmltab包将第 5 行中的NA替换为行 id/编号?

这似乎确实是htmltab的一个问题。我找到的唯一解决方案是直接读取表的tbody。然后,您需要手动添加标头。

htmltab(doc = url, which = "//table[2]/tbody")

在这种帮助下,我找到了一个非常简单的解决方案:

  1. 指定跳过标头
  2. 通过列名列出/定义所有列

    网址 <- "https://www.bundesliga-prognose.de/1/2007/5/" sp_2007_5<- htmltab(doc = url, 其中 = "//table[1]/tbody", header = 0 , colNames = c("Datum" , "Anpfiff", "Heim" , "Heim_Kurzname","Gast", "Gast_Kurzname","Ergebnis", "Prognose"), rm_nodata_cols = F,编码 = "UTF-8") 头(sp_2007_5)

最新更新