R 中是否有一种简单的方法可以仅提取 HTML 页面的文本元素?
我认为这被称为“屏幕抓取”,但我没有这方面的经验,我只需要一种简单的方法来提取您在访问 url 时通常会在浏览器中看到的文本。
原文由 JoshuaCrove 发布,翻译遵循 CC BY-SA 4.0 许可协议
R 中是否有一种简单的方法可以仅提取 HTML 页面的文本元素?
我认为这被称为“屏幕抓取”,但我没有这方面的经验,我只需要一种简单的方法来提取您在访问 url 时通常会在浏览器中看到的文本。
原文由 JoshuaCrove 发布,翻译遵循 CC BY-SA 4.0 许可协议
最好的解决方案是打包 htm2txt。
library(htm2txt)
url <- 'https://en.wikipedia.org/wiki/Alan_Turing'
text <- gettxt(url)
有关详细信息,请参阅 https://CRAN.R-project.org/package=htm2txt 。
原文由 guest 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.5k 阅读✓ 已解决
2 回答877 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答892 阅读✓ 已解决
2 回答780 阅读
1 回答768 阅读✓ 已解决
2 回答1.1k 阅读
我不得不自己做一次。
一种方法是使用 XPath 表达式。您需要从 http://www.omegahat.org/ 的存储库安装这些软件包
我们使用 RCurl 连接到感兴趣的网站。它有很多选项,允许您访问基本 R 中的默认功能难以访问的网站,我认为可以公平地说。它是 libcurl 库的 R 接口。
我们使用 RTidyHTML 清理格式错误的 HTML 网页,以便它们更易于解析。它是 libtidy 库的 R 接口。
我们使用 XML 来解析带有 XPath 表达式的 HTML 代码。它是 libxml2 库的 R 接口。
无论如何,这就是你要做的(最少的代码,但选项可用,请参阅相应功能的帮助页面):
这种方法可能存在一些问题,但我不记得它们是什么(我不认为我的 xpath 表达式适用于所有网页,有时它可能不会过滤掉脚本代码或者它可能plain 根本无法与其他一些页面一起使用,最好进行试验!)
PS 另一种方法,它几乎完美地工作我认为在网络上从 html 抓取所有文本如下(基本上让 Internet Explorer 为你做转换):
但是,我从来都不喜欢这样做,因为它不仅速度慢,而且如果你对其进行矢量化并应用 URL 向量,如果 Internet Explorer 在错误页面上崩溃,那么 R 可能会挂起或崩溃(我不认为?try 在这种情况下有很大帮助)。它也容易允许弹出窗口。我不知道,自从我这样做以来已经有一段时间了,但我认为我应该指出这一点。