基于R语言的WEB半结构化数据抓取与统计分析

2016-10-14 01:34邓远飞甄晓云孟捷
价值工程 2016年5期
关键词:数据分析数据挖掘

邓远飞 甄晓云 孟捷

摘要:大数据时代,数据成为决策最重要的参考之一,通过数据抓取能够准确抓取我们需要的数据,然后挖掘出有用信息。本文以花卉网站为例,提出Web数据抓取与存储框架,实现了抓取Web网站中的半结构化数据,转换成结构化数据存储进数据库,并对数据进行预处理,然后运用数据分析和数据挖掘技术将结果展现出来,帮助花卉企业在花卉市场进行更准确的商业决策。

Abstract: In the era of big data, data become one of the most important references for decision-making. The data scraping can accurately capture the data we need, and then dig out the useful information. Based on flower website, this paper puts forward Web data scraping and storage framework. It realizes the semi-structured data in the Web sites, converts it into structured data and stores into the database, and carried put the preprocessing of the data. Then, it uses the data analysis and data mining technology to show the results and help the flowers enterprises take more accurate business decisions for flower market.

关键词:XML;XPath;R;半结构化;Web数据抓取;数据分析;数据挖掘

Key words: XML;XPath;R;semi-structured;Web data scraping;data analysis;data mining

中图分类号:TP311.1 文献标识码:A 文章编号:1006-4311(2016)05-0232-03

0 引言

随着Web信息技术的迅速发展,人们可以越来越方便快捷地获得各种信息,但是却难以迅速地获得更准确及适用的数据。虽然目前有多种查全率较高的搜索引擎,但它们的查准率普遍不高,很难进一步挖掘深度数据[1]。因此,研究如何对Web数据自动搜集及对搜集的数据的进行数据分析与挖掘具有重要现实意义。

本文将研究在花卉市场中Web数据挖掘[2]技术的应用,利用R软件编写数据抓取程序采集互联网上的花卉网站上的大量数据,并对数据进行预处理,然后运用数据分析和数据挖掘技术将结果展现出来,帮助花卉企业在花卉市场进行更准确的商业决策。

本文程序的开发环境基于R,完成了数据抓取、数据预处理和数据分析,使用MySQL数据库进行永久性数据存储。在R中对网页解析(XML、HTML文件,或包含 XML、HTML的字符串)有多种方法,比较成熟的方法是使用XML包。该程序包能够将XML、HTML网页树(tree)解析成R结构数据。对标准XML文件的解析函数xmlParse,以及适应性更强的htmlTreeParse函数,这些函数都拥有大量的参数来适应解析需要。使用R程序包XML中的getNodeSet函数,获取XML文档中的信息。本文通过googlechrome浏览器可以快速获取XPath路径值。XPath是针对XML文档的查询语言[3],是一种页面元素的路径选择方法,即为XML路径语言,XPath提供在数据结构树中找寻节点的能力。

1 数据抓取与存储

一般的数据抓取从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL链接放入队列,直到满足系统的一定停止条件。抓取网站的内容一般分为两部分,非结构化文本[4]或结构化文本。本文主要抓取的是非结构化的文本内容。

网页抓取到的数据存包含噪音、异常情况和不相关的数据信息。因此,需要按照数据分析和数据挖掘的具体需要,通过选择特定属性相关的数据进行抽取,并清理掉噪音数据。将数据收集部分抓取到的网页资源作为Web数据分析的源头,通过数据预处理模块对这些网页资源中的数据进行清理、转换和合并等预处理[5]操作,终加载到本人搭建的小型MySQL数据库中,为后续的数据分析和数据挖掘工作提供数据支持。

Web数据抓取与存储框架图如图1所示,各模块功能如下:①分类解析模块,从Web主页链接中解析出页面分类链接。②URL解析模块,从页面分类链接中解析出子页面的URL链接加入到URL队列。③HTML解析模块,从子页面的URL队列中解析出HTML文档。④转换整理模块,R程序包downloader中的download函数实现访问网络中HTML文件下载到本地转成XML文件,保证后续解析的稳定性与完整性。⑤解析读取模块,根据解析的XML文档结构特点,读取XML文件获取需要的数据,合并成data.frame类型数据并通过R程序包RMySQL中的dbWriteTable函数存储进MySQL数据库。⑥数据预处理模块,读取MySQL数据库中数据,经过数据预处理模块处理,然后再覆盖存入数据库。其中,数据预处理模块包含下面几个子功能:1)数据合并,通过R程序包base中的merge函数操作,合并不同data.frame类型数据。2)数据清理,去除冗余数据,去除无效样本,去除数据字段中多余字符串。3)轉换数据类型,把文本类型字段转为相应的数据类型。4)缺失值处理,删除或替换缺失值。5)中文分词,如商品简介和包装简介字段,用R程序包jiebaR中的worker函数自定义分词引擎,进行分词,提取需要的字段存储进MySQL数据库。

需要注意以下几个问题:①在分类解析模块、URL解析模块和HTML解析模块,由于抓取页面内容不多,因为没有把HTML文件转换成XML文件处理;在转换整理模块,由于需要抓取页面内容数据量大,因此需要把HTML文件转换成XML文件处理,保证解析的稳定性和完整性。②遇到无法直接找到规律的URL链接,可模拟手动点击“下一页”来获取URL链接。网页URL链接一般隐藏在节点中,可调用R程序包XML中的xmlValue函数可以获取HTML文档或者XML文档中的节点值。③XPath值虽然可以通过googlechrome浏览器快速得到,但是,由于网页基本结构。④如果在数据抓取阶段遇到中文乱码的编码问题,可调用R程序包base中的iconv(x,"utf-8","gbk")函数转换编码,解决中文乱码问题。⑤如果R访问MySQL数据库出现中文乱码,可调用R程序包RMySQL中的dbSendQuery(conn,'SET NAMES gbk')函数设置GBK字符集,解决读取数据中文乱码的编码问题。

2 数据展示与分析

数据收集是取得统计数据的过程,数据预处理是将数据中的问题清理干净,那么接下来的步骤就是统计分析了。

在所有的商品中,由表1可看出,商品数据按照花材分类,前六种花材(玫瑰、百合、康乃馨、仿真花、满天星)占有总花材的近80%。市场主要是以玫瑰和百合为主。默认条件下,可计算出“五数”:最小值、25%的四分位数、中位数、75%的四分位数和最大值。以玫瑰花为例,用R函数fivenum()用来计算五数,如下:

> fivenum(sub_classFlowers$price)

[1] 125.0 260.0 364.0 591.5 10073.0

由计算结果可以看出,75%的玫瑰花都在600元以下,选取1000元以下的玫瑰花产品,画出频数密度图,如图2,可直观看出,大多数产品都在300元左右。也就是说,300元左右的玫瑰花是产品种类最多的,也是大众最能接受。

在所有的商品中,由表2可看出,商品数据按送花对象分类,接近70%商品是以赠送送给恋人为目的。以恋人对象为例,计算五数,如下:

> fivenum(sub_classObject$price)

[1] 73.0 241.5 336.0 537.0 29238.0

由计算结果可以看出,75%的产品都在350元以下,选取1000元以下的恋人对象产品,画出频数密度图,如图3,可直观看出,大多数产品都在300元左右。也就是说,300元左右的产品是以赠送给恋人为目的的产品种类最多,也是大众最能接受。

在所有的商品中,由表3可看出,商品数据按送花用途分类,接近80%的商品购买用于爱情和生日用途。以爱情用途为例,计算五数,如下:

> fivenum(sub_classUse$price)

[1] 73 242 326 493 995

由计算结果可以看出,75%的产品都是购买用于爱情,且价格在500元以下,选取1000元以下的以爱情用途产品,画出频数密度图,如图4,可直观看出,大多数产品都在300元左右。也就是说,300元左右的产品是购买用于爱情为目的的产品种类最多,也是大众最能接受。

根据送花对象和按送花用途频数组成的列联表如表4所示,我们可知道,在所有的商品中,送给恋人、用于恋人用途的产品种类是最多的。根据以上几个表格,我们可以知道,大多数产品都是300元左右,以玫瑰花、百合花为主,用于赠送给恋人为主,以爱情为目的,因此我们推断出,网店花卉产品主要设计为了追求爱情的年轻人,购买产品价格不能太高。

3 结束语

本文探讨了Web数据挖掘技术在花卉市场中的应用,利用R软件编写数据抓取程序抓取其中一个花卉网站上的全部花卉数据,并对数据进行预处理,然后运用数据分析和数据挖掘技术将结果展现出来,帮助花卉企业在花卉市场进行更准确的商业决策。本文的研究虽然取得了初步的成功,但尚存在一些地方有待进一步的深入研究,这里择其要者简要讨论如下:

①数据抓取部分抓取程序中的重复抓取过滤的问题尚存在一些缺陷,有待进一步的算法改进。②本文所抓取数据量不过两千多,因此选择用R软件抓取数据,但是,抓取过程中,由于网速不稳定和R语言本身对并发处理的欠缺性,抓取过程也比较缓慢,整个抓取数据程序跑完大概需要4小时。③有些数据网站并没有给出来,所以也无法爬取,比如购买人数、购买人购物信息、以及网店成交量等等。④数据分析部分是以直观、易理解的方式展现给花卉企业决策者,帮助决策者在运营过程中正确把握买家需求,做出正确的运营决策。在后续的研究工作中,将进一步的挖掘更深层次信息。比如需要对商品简介、材料包装和花语文本字段进行文本挖掘,挖掘出隐藏信息。

本文通过抓取花卉市场的网站数据信息,并应用数据挖掘技术对这些数据进行分析、挖掘,达到帮助花卉企业决策、提高客户满意度、提升经济效益的目。XML文档极大程度的减少了结构转换时间,数据的解析也更为快速,随着网页结构的复杂化,研究一种适用所有类型Web页面的智能抓取信息方法成为网页信息抓取今后发展的重要方向。

参考文献:

[1]蒋宏潮,王大亮,班晓娟.基于XML的Web数据半自动采集[J].计算机工程,2009,35(21).

[2]王实,高文,李锦涛.Web数据挖掘[J].计算机科学,2000,27(4).

[3]陈琛.基于XML文档中XPath查询与结构研究[J].电子技术与软件工程,2015,14.

[4]程洪濤.基于XML的非结构化文本数据转换研究与实现[J].现代计算机,2013,9.

[5]汪伟,邹璇,詹雪.论数据挖掘中的数据预处理技术[J].煤炭技术,2013,5.

猜你喜欢
数据分析数据挖掘
基于并行计算的大数据挖掘在电网中的应用
新常态下集团公司内部审计工作研究
浅析大数据时代对企业营销模式的影响
一种基于Hadoop的大数据挖掘云服务及应用
基于GPGPU的离散数据挖掘研究