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

相关文章
|
4天前
|
数据可视化
【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享-4
【视频】R语言生存分析原理与晚期肺癌患者分析案例|数据分享
33 1
|
3天前
|
vr&ar Python
R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据
R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据
|
1天前
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享(下)
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
|
1天前
|
数据可视化 数据挖掘
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
【视频】复杂网络分析CNA简介与R语言对婚礼数据聚类社区检测和可视化|数据分享
|
2天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
【4月更文挑战第25天】R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
|
2天前
|
测试技术
数据分享|R语言回归,虚拟变量和交互项,假设检验:F检验、AIC和 BIC分析学生成绩数据附自测题(下)
数据分享|R语言回归,虚拟变量和交互项,假设检验:F检验、AIC和 BIC分析学生成绩数据附自测题
10 0
|
2天前
|
机器学习/深度学习 数据可视化
数据分享|R语言回归,虚拟变量和交互项,假设检验:F检验、AIC和 BIC分析学生成绩数据附自测题(上)
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
|
2天前
|
机器学习/深度学习 自然语言处理 算法
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享(下)
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享
10 0
|
2天前
|
机器学习/深度学习 算法 大数据
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享(上)
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享
|
2天前
|
机器学习/深度学习 数据可视化 数据挖掘
数据分享|R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标
数据分享|R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标