《R语言数据分析》——2.3 从HTML表中读取数据-阿里云开发者社区

开发者社区> 华章计算机> 正文

《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包确实都是首先关注构建模型并对数据应用不同的测试。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
对《神奇的C语言》文中例子 5 代码的分析讨论
  在春节前,我曾经参与在《神奇的C语言》一文中的例子(5)的讨论,但限于评论内容的有限,现在本文再次对这个问题单独讨论。(此问题原貌,详见《神奇的C语言》,这里我将原文中的代码稍做轻微改动,并重新给出如下)   原问题给出如下代码:   #include void func1(char a[]) {  //这里的参数 a 为指向数组的指针,因此 &a 和 a 的意义不同(前者为指针变量的地址,后者为指针变量的值)  //&a 表示指针变量的地址。
823 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6417 0
Spark学习之数据读取与保存(4)
Spark学习之数据读取与保存(4) 1. 文件格式 Spark对很多种文件格式的读取和保存方式都很简单。 如文本文件的非结构化的文件,如JSON的半结构化文件,如SequenceFile结构化文件。通过扩展名进行处理。 2. 读取/保存文本文件 Python中读取一个文本文件 input = sc.textfile("file:///hom
1302 0
《R语言游戏数据分析与挖掘》一第1章 什么是游戏数据分析
本节书摘来华章计算机《R语言游戏数据分析与挖掘》一书中的第1章 ,第1.1节,谢佳标 著 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
962 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载