html - 从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 库?)。
任何帮助将不胜感激。
解决方案
推荐阅读
- django - 如何使用 Django Djoser 处理激活 url?
- docker - 使用同一作者从 gitlab CI 下载另一个私有存储库
- python - 如何检查python中的列或行(或对角线)是否都相等
- android - 如果使用应用程序的人决定退出而不回答问题,有什么方法可以自动锁定设备
- node.js - 如何从 aws lambda 中的 http 请求获取输出
- vue.js - Vue - 当它是 main.js 的一部分时如何提交 firebase 配置数据?
- python - 如何用星星(“*”)替换csv文件列中的非重复值?
- python - 通过socket/ftp python从服务器向客户端发送文件
- apache-kafka - 如何在 apache nifi ConsumeKafka 的同一处理器中添加更多消费者
- python - 如何在Python中找到给定开始和结束日期的x个下一个日期