gpt4 book ai didi

删除 XML 包中 readHTMLTable 中的标签

转载 作者:行者123 更新时间:2023-12-04 15:25:00 28 4
gpt4 key购买 nike

我正在尝试从以下网址的表格中抓取数据:

http://www.nfpa.org/itemDetail.asp?categoryID=953&itemID=23033

问题是包含在
<sup> </sup>

标签。当我使用以下代码时(诚然不是很优雅)
url.overview <- "http://www.nfpa.org/itemDetail.asp?categoryID=953&itemID=23033"
overview <- readHTMLTable(overview)
overview <- overview[[2]]
overview <- overview[-1,]

f <- function(x){
out <- iconv(x, "latin1", "ASCII", sub="")
out <- gsub('[\\$,]', '', out)
out <- as.numeric(out)
return(out)
}

overview <- matrix(f(as.character(unlist(overview))), ncol = ncol(overview))
overview <- as.data.frame(overview)
names(overview) <- c('year', 'fires', 'civ.deaths', 'civ.injuries', 'ff.deaths',
'ff.injuries', 'damage.reported', 'damage.2010dollars')

除了上标中的值附加到表格单元格中的值的末尾之外,我完全得到了我想要的。例如,(使用上面给出的 url 中的行和列名称)2001 年的平民死亡人数存储为 61963,而它们应该是 6196,因为上标 3 被解释为一个额外的数字。表格中缺少上标的任何单元格都完全正确。

在文档中挣扎了几个小时后,我能够使用这些功能 parseHTMLgetNodeSet从 XML 包中识别包含 <sup> 的所有节点标签,但无法弄清楚从那里做什么:
overview <- htmlParse(url.overview)
getNodeSet(overview, "//sup")

我认为我需要以某种方式删除 XML 树的这些部分,然后将结果传递回 readHTMLTable 进行进一步处理,但我无法弄清楚如何执行此操作。

我会很感激你的想法。

最佳答案

尝试

require(XML)
url.overview <- "http://www.nfpa.org/itemDetail.asp?categoryID=953&itemID=23033"
overview <- htmlParse(url.overview,encoding="UTF-8")
temp<-getNodeSet(overview, "/*//span[@class=\"small\"]/sup")
removeNodes(temp)
app.data<-readHTMLTable(overview)[[2]]

所以在这里我们只是删除我们不想要的节点并将剩余的节点反馈回 readHTMLTable拿第二张 table 。我在此 Windows 框中遇到编码问题。您可能希望将编码保留在 htmlParse 中。或者它可能在没有你的情况下正常工作。

关于删除 XML 包中 readHTMLTable 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com