《R语言数据分析》——2.3 从HTML表中读取数据

简介:

本节书摘来自华章出版社《R语言数据分析》一书中的第2章,第2.3节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 从HTML表中读取数据

万维网上传统的文本和数据以HTML页面为主,我们经常可以从例如HTML表找到一些有意思的信息,很容易就能通过复制和粘贴将数据转换成Excel电子表格,保存在磁盘上,稍后再导入到R中。但是这个过程比较费时间,也有点枯燥,因此可以考虑进行自动化处理。

可以借助前面提到过的客户反馈数据库的APIs来实现这一功能。如果我们不指定输出格式为XML格式或JSON格式,浏览器将默认返回一个HTML表格,输出结果如下图:

QQ_20170525111931

在R控制台中实现这个功能有点复杂,因为当使用curl时,浏览器将发送一些非默认的HTTP头,如果处理的是URL则简单返回一个JSON表。为了得到HTML格式,必须要让服务器知道我们期望的是HTML的输出格式,因此,需要在查询中设置合适的HTTP头:

QQ_20170525111936

XML包也提供了一个非常简单的办法实现从某个文档或指定结点来解析所有的HTML表,调用readHTMLTable函数,该函数将默认返回一个data.frames的list对象:

QQ_20170525111940

如果仅希望获得页面的第一张表,我们可以稍后设置res的过滤器或者设置readHTML-Table中which参数的值。以下两个R表达式效果相同:

QQ_20170525111945

从静态Web页面读取表数据

到目前为止,我们已经在同一个主题上变换了不少花样,但如果我们发现下载了一个完全不是前述任何一种流行的数据格式文件该怎么办?例如,有些人可能会对在CRAN上提供的R包感兴趣,这些包的列表可从http://cran.r-project.org/web/packages/available_packages_by_name.html处获得。我们又该如何完成这个任务?不调用RCurl或者指定客户头,我们也不需要先去处理文件,只需将URL传递给readHTMLTable即可:

QQ_20170525111951

readHTMLTable能够直接获得HTML页面,然后抽取所有的HTML表转换成data.frame对象,并返回有关它们的list内容。在下面的样例中,我们将只使用一个data.frame的list信息来获得所有包的名字和列的描述。

不过,str函数返回的文本信息所含信息量并不是很大,我们将快速介绍处理和可视化这类原始数据的方法,并通过CRAN上的R包来展示这些有些过量的特征。可以通过wordcloud包和tm包中一些奇妙的函数来创建一个关于包的描述的词组云:

QQ_20170525111956

这一简短的命令可以产生如下图所示的结果输出,它们代表了有关R包的描述中出现频率最高的词语。这些词语的位置没有特殊含义,但是通常词语的字体越大,意味着其出现频率越高。请参考屏幕截图的技术说明:

QQ_20170525112001

我们刚才是将第一个list对象的第二行字串传递到wordcloud函数,该函数将自动返回tm包对文本数据挖掘的结果。有关这一内容的详细说明,请参考本书第7章的内容。接下来,函数将根据这些词语在包描述中出现的频率赋予相应权重,然后根据权重确定其输出字体大小。看起来,R包确实都是首先关注构建模型并对数据应用不同的测试。

相关文章
|
3月前
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
本文介绍了Twaver HTML5中数据的批量加载方法,通过使用`box.startBatch()`可以在大量数据加载时提高性能。文章通过示例代码展示了如何在React组件中使用批量加载功能,以减少界面重绘次数并提升效率。
62 2
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
51 1
|
3月前
|
数据挖掘 PyTorch TensorFlow
|
8天前
|
数据采集 前端开发 数据挖掘
利用 html_table 函数轻松获取网页中的表格数据
本文介绍了如何使用 R 语言中的 `html_table` 函数结合代理 IP 技术,轻松提取网页表格数据并规避反爬机制。通过设置代理和请求头,示例代码展示了如何从 58 同城采集租房信息并保存为 CSV 文件。该方法适用于需要频繁采集数据的场景,确保数据采集的高效和稳定性。
利用 html_table 函数轻松获取网页中的表格数据
|
1月前
|
存储 机器学习/深度学习 数据可视化
数据集中存在大量的重复值,会对后续的数据分析和处理产生什么影响?
数据集中存在大量重复值可能会对后续的数据分析和处理产生多方面的负面影响
115 56
|
9天前
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
1月前
|
JavaScript API 开发工具
<大厂实战场景> ~ Flutter&鸿蒙next 解析后端返回的 HTML 数据详解
本文介绍了如何在 Flutter 中解析后端返回的 HTML 数据。首先解释了 HTML 解析的概念,然后详细介绍了使用 `http` 和 `html` 库的步骤,包括添加依赖、获取 HTML 数据、解析 HTML 内容和在 Flutter UI 中显示解析结果。通过具体的代码示例,展示了如何从 URL 获取 HTML 并提取特定信息,如链接列表。希望本文能帮助你在 Flutter 应用中更好地处理 HTML 数据。
122 1
|
2月前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
61 2
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
56 2
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
某A保险公司的 数据图表和数据分析
某A保险公司的 数据图表和数据分析
67 0
某A保险公司的 数据图表和数据分析