首页 > 解决方案 > 从R中的html文件中提取纯文本

问题描述

我正在从安全和交易委员会网站下载包含文本和 html 标记的文档。我正在尝试通过删除 html 标签来提取正文。

在我的第一次尝试中,我使用 XML 包中的函数并在 output.htmltotext 中显示转换结果。这种方法无法提取文档的主要文本。

library(XML) 
dir = getwd(); 

download.file("https://www.sec.gov/Archives/edgar/data/1000180/0000891618-06-000116.txt", file.path(dir,"filing.html"))

# attempt 1
doc.html = htmlTreeParse(file.path(dir,"filing.html"), useInternal = TRUE)
doc.text = unlist(xpathApply(doc.html, '//p', xmlValue))
output.htmltotext = as.data.frame(doc.text)

在我的第二次尝试中,我让 Mac 系统使用 textutil 进行从 html 到 txt 的转换。

# attempt 2
system(paste0('textutil -convert txt ',file.path(dir,"filing.html")))
output.macsystem <- read.table(file=file.path(dir, "filing.txt"),sep="\t", quote= "",comment.char="",stringsAsFactors=FALSE)

我发现这种方法非常准确,尽管非常耗时。转换单个文档可能需要 1 或 2 分钟,因为文件大小可以达到 80-90 MB,而我有数千个文档。我想知道这个问题是否有更优雅的解决方案(也许从 R 调用 Python 并使用 Beautiful Soup 库?)。

任何帮助将不胜感激。

标签: htmlrxmltext

解决方案


推荐阅读