我正在从安全和交易委员会网站下载一个包含文本和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库?)。
任何帮助将不胜感激。