鄧遠(yuǎn)飛 甄曉云 孟捷
摘要:大數(shù)據(jù)時(shí)代,數(shù)據(jù)成為決策最重要的參考之一,通過(guò)數(shù)據(jù)抓取能夠準(zhǔn)確抓取我們需要的數(shù)據(jù),然后挖掘出有用信息。本文以花卉網(wǎng)站為例,提出Web數(shù)據(jù)抓取與存儲(chǔ)框架,實(shí)現(xiàn)了抓取Web網(wǎng)站中的半結(jié)構(gòu)化數(shù)據(jù),轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)進(jìn)數(shù)據(jù)庫(kù),并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,然后運(yùn)用數(shù)據(jù)分析和數(shù)據(jù)挖掘技術(shù)將結(jié)果展現(xiàn)出來(lái),幫助花卉企業(yè)在花卉市場(chǎng)進(jìn)行更準(zhǔn)確的商業(yè)決策。
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.
關(guān)鍵詞:XML;XPath;R;半結(jié)構(gòu)化;Web數(shù)據(jù)抓??;數(shù)據(jù)分析;數(shù)據(jù)挖掘
Key words: XML;XPath;R;semi-structured;Web data scraping;data analysis;data mining
中圖分類號(hào):TP311.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2016)05-0232-03
0 引言
隨著Web信息技術(shù)的迅速發(fā)展,人們可以越來(lái)越方便快捷地獲得各種信息,但是卻難以迅速地獲得更準(zhǔn)確及適用的數(shù)據(jù)。雖然目前有多種查全率較高的搜索引擎,但它們的查準(zhǔn)率普遍不高,很難進(jìn)一步挖掘深度數(shù)據(jù)[1]。因此,研究如何對(duì)Web數(shù)據(jù)自動(dòng)搜集及對(duì)搜集的數(shù)據(jù)的進(jìn)行數(shù)據(jù)分析與挖掘具有重要現(xiàn)實(shí)意義。
本文將研究在花卉市場(chǎng)中Web數(shù)據(jù)挖掘[2]技術(shù)的應(yīng)用,利用R軟件編寫數(shù)據(jù)抓取程序采集互聯(lián)網(wǎng)上的花卉網(wǎng)站上的大量數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,然后運(yùn)用數(shù)據(jù)分析和數(shù)據(jù)挖掘技術(shù)將結(jié)果展現(xiàn)出來(lái),幫助花卉企業(yè)在花卉市場(chǎng)進(jìn)行更準(zhǔn)確的商業(yè)決策。
本文程序的開(kāi)發(fā)環(huán)境基于R,完成了數(shù)據(jù)抓取、數(shù)據(jù)預(yù)處理和數(shù)據(jù)分析,使用MySQL數(shù)據(jù)庫(kù)進(jìn)行永久性數(shù)據(jù)存儲(chǔ)。在R中對(duì)網(wǎng)頁(yè)解析(XML、HTML文件,或包含 XML、HTML的字符串)有多種方法,比較成熟的方法是使用XML包。該程序包能夠?qū)ML、HTML網(wǎng)頁(yè)樹(shù)(tree)解析成R結(jié)構(gòu)數(shù)據(jù)。對(duì)標(biāo)準(zhǔn)XML文件的解析函數(shù)xmlParse,以及適應(yīng)性更強(qiáng)的htmlTreeParse函數(shù),這些函數(shù)都擁有大量的參數(shù)來(lái)適應(yīng)解析需要。使用R程序包XML中的getNodeSet函數(shù),獲取XML文檔中的信息。本文通過(guò)googlechrome瀏覽器可以快速獲取XPath路徑值。XPath是針對(duì)XML文檔的查詢語(yǔ)言[3],是一種頁(yè)面元素的路徑選擇方法,即為XML路徑語(yǔ)言,XPath提供在數(shù)據(jù)結(jié)構(gòu)樹(shù)中找尋節(jié)點(diǎn)的能力。
1 數(shù)據(jù)抓取與存儲(chǔ)
一般的數(shù)據(jù)抓取從一個(gè)或若干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL鏈接放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。抓取網(wǎng)站的內(nèi)容一般分為兩部分,非結(jié)構(gòu)化文本[4]或結(jié)構(gòu)化文本。本文主要抓取的是非結(jié)構(gòu)化的文本內(nèi)容。
網(wǎng)頁(yè)抓取到的數(shù)據(jù)存包含噪音、異常情況和不相關(guān)的數(shù)據(jù)信息。因此,需要按照數(shù)據(jù)分析和數(shù)據(jù)挖掘的具體需要,通過(guò)選擇特定屬性相關(guān)的數(shù)據(jù)進(jìn)行抽取,并清理掉噪音數(shù)據(jù)。將數(shù)據(jù)收集部分抓取到的網(wǎng)頁(yè)資源作為Web數(shù)據(jù)分析的源頭,通過(guò)數(shù)據(jù)預(yù)處理模塊對(duì)這些網(wǎng)頁(yè)資源中的數(shù)據(jù)進(jìn)行清理、轉(zhuǎn)換和合并等預(yù)處理[5]操作,終加載到本人搭建的小型MySQL數(shù)據(jù)庫(kù)中,為后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)挖掘工作提供數(shù)據(jù)支持。
Web數(shù)據(jù)抓取與存儲(chǔ)框架圖如圖1所示,各模塊功能如下:①分類解析模塊,從Web主頁(yè)鏈接中解析出頁(yè)面分類鏈接。②URL解析模塊,從頁(yè)面分類鏈接中解析出子頁(yè)面的URL鏈接加入到URL隊(duì)列。③HTML解析模塊,從子頁(yè)面的URL隊(duì)列中解析出HTML文檔。④轉(zhuǎn)換整理模塊,R程序包downloader中的download函數(shù)實(shí)現(xiàn)訪問(wèn)網(wǎng)絡(luò)中HTML文件下載到本地轉(zhuǎn)成XML文件,保證后續(xù)解析的穩(wěn)定性與完整性。⑤解析讀取模塊,根據(jù)解析的XML文檔結(jié)構(gòu)特點(diǎn),讀取XML文件獲取需要的數(shù)據(jù),合并成data.frame類型數(shù)據(jù)并通過(guò)R程序包RMySQL中的dbWriteTable函數(shù)存儲(chǔ)進(jìn)MySQL數(shù)據(jù)庫(kù)。⑥數(shù)據(jù)預(yù)處理模塊,讀取MySQL數(shù)據(jù)庫(kù)中數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)預(yù)處理模塊處理,然后再覆蓋存入數(shù)據(jù)庫(kù)。其中,數(shù)據(jù)預(yù)處理模塊包含下面幾個(gè)子功能:1)數(shù)據(jù)合并,通過(guò)R程序包base中的merge函數(shù)操作,合并不同data.frame類型數(shù)據(jù)。2)數(shù)據(jù)清理,去除冗余數(shù)據(jù),去除無(wú)效樣本,去除數(shù)據(jù)字段中多余字符串。3)轉(zhuǎn)換數(shù)據(jù)類型,把文本類型字段轉(zhuǎn)為相應(yīng)的數(shù)據(jù)類型。4)缺失值處理,刪除或替換缺失值。5)中文分詞,如商品簡(jiǎn)介和包裝簡(jiǎn)介字段,用R程序包jiebaR中的worker函數(shù)自定義分詞引擎,進(jìn)行分詞,提取需要的字段存儲(chǔ)進(jìn)MySQL數(shù)據(jù)庫(kù)。
需要注意以下幾個(gè)問(wèn)題:①在分類解析模塊、URL解析模塊和HTML解析模塊,由于抓取頁(yè)面內(nèi)容不多,因?yàn)闆](méi)有把HTML文件轉(zhuǎn)換成XML文件處理;在轉(zhuǎn)換整理模塊,由于需要抓取頁(yè)面內(nèi)容數(shù)據(jù)量大,因此需要把HTML文件轉(zhuǎn)換成XML文件處理,保證解析的穩(wěn)定性和完整性。②遇到無(wú)法直接找到規(guī)律的URL鏈接,可模擬手動(dòng)點(diǎn)擊“下一頁(yè)”來(lái)獲取URL鏈接。網(wǎng)頁(yè)URL鏈接一般隱藏在節(jié)點(diǎn)中,可調(diào)用R程序包XML中的xmlValue函數(shù)可以獲取HTML文檔或者XML文檔中的節(jié)點(diǎn)值。③XPath值雖然可以通過(guò)googlechrome瀏覽器快速得到,但是,由于網(wǎng)頁(yè)基本結(jié)構(gòu)。④如果在數(shù)據(jù)抓取階段遇到中文亂碼的編碼問(wèn)題,可調(diào)用R程序包base中的iconv(x,"utf-8","gbk")函數(shù)轉(zhuǎn)換編碼,解決中文亂碼問(wèn)題。⑤如果R訪問(wèn)MySQL數(shù)據(jù)庫(kù)出現(xiàn)中文亂碼,可調(diào)用R程序包RMySQL中的dbSendQuery(conn,'SET NAMES gbk')函數(shù)設(shè)置GBK字符集,解決讀取數(shù)據(jù)中文亂碼的編碼問(wèn)題。
2 數(shù)據(jù)展示與分析
數(shù)據(jù)收集是取得統(tǒng)計(jì)數(shù)據(jù)的過(guò)程,數(shù)據(jù)預(yù)處理是將數(shù)據(jù)中的問(wèn)題清理干凈,那么接下來(lái)的步驟就是統(tǒng)計(jì)分析了。
在所有的商品中,由表1可看出,商品數(shù)據(jù)按照花材分類,前六種花材(玫瑰、百合、康乃馨、仿真花、滿天星)占有總花材的近80%。市場(chǎng)主要是以玫瑰和百合為主。默認(rèn)條件下,可計(jì)算出“五數(shù)”:最小值、25%的四分位數(shù)、中位數(shù)、75%的四分位數(shù)和最大值。以玫瑰花為例,用R函數(shù)fivenum()用來(lái)計(jì)算五數(shù),如下:
> fivenum(sub_classFlowers$price)
[1] 125.0 260.0 364.0 591.5 10073.0
由計(jì)算結(jié)果可以看出,75%的玫瑰花都在600元以下,選取1000元以下的玫瑰花產(chǎn)品,畫出頻數(shù)密度圖,如圖2,可直觀看出,大多數(shù)產(chǎn)品都在300元左右。也就是說(shuō),300元左右的玫瑰花是產(chǎn)品種類最多的,也是大眾最能接受。
在所有的商品中,由表2可看出,商品數(shù)據(jù)按送花對(duì)象分類,接近70%商品是以贈(zèng)送送給戀人為目的。以戀人對(duì)象為例,計(jì)算五數(shù),如下:
> fivenum(sub_classObject$price)
[1] 73.0 241.5 336.0 537.0 29238.0
由計(jì)算結(jié)果可以看出,75%的產(chǎn)品都在350元以下,選取1000元以下的戀人對(duì)象產(chǎn)品,畫出頻數(shù)密度圖,如圖3,可直觀看出,大多數(shù)產(chǎn)品都在300元左右。也就是說(shuō),300元左右的產(chǎn)品是以贈(zèng)送給戀人為目的的產(chǎn)品種類最多,也是大眾最能接受。
在所有的商品中,由表3可看出,商品數(shù)據(jù)按送花用途分類,接近80%的商品購(gòu)買用于愛(ài)情和生日用途。以愛(ài)情用途為例,計(jì)算五數(shù),如下:
> fivenum(sub_classUse$price)
[1] 73 242 326 493 995
由計(jì)算結(jié)果可以看出,75%的產(chǎn)品都是購(gòu)買用于愛(ài)情,且價(jià)格在500元以下,選取1000元以下的以愛(ài)情用途產(chǎn)品,畫出頻數(shù)密度圖,如圖4,可直觀看出,大多數(shù)產(chǎn)品都在300元左右。也就是說(shuō),300元左右的產(chǎn)品是購(gòu)買用于愛(ài)情為目的的產(chǎn)品種類最多,也是大眾最能接受。
根據(jù)送花對(duì)象和按送花用途頻數(shù)組成的列聯(lián)表如表4所示,我們可知道,在所有的商品中,送給戀人、用于戀人用途的產(chǎn)品種類是最多的。根據(jù)以上幾個(gè)表格,我們可以知道,大多數(shù)產(chǎn)品都是300元左右,以玫瑰花、百合花為主,用于贈(zèng)送給戀人為主,以愛(ài)情為目的,因此我們推斷出,網(wǎng)店花卉產(chǎn)品主要設(shè)計(jì)為了追求愛(ài)情的年輕人,購(gòu)買產(chǎn)品價(jià)格不能太高。
3 結(jié)束語(yǔ)
本文探討了Web數(shù)據(jù)挖掘技術(shù)在花卉市場(chǎng)中的應(yīng)用,利用R軟件編寫數(shù)據(jù)抓取程序抓取其中一個(gè)花卉網(wǎng)站上的全部花卉數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,然后運(yùn)用數(shù)據(jù)分析和數(shù)據(jù)挖掘技術(shù)將結(jié)果展現(xiàn)出來(lái),幫助花卉企業(yè)在花卉市場(chǎng)進(jìn)行更準(zhǔn)確的商業(yè)決策。本文的研究雖然取得了初步的成功,但尚存在一些地方有待進(jìn)一步的深入研究,這里擇其要者簡(jiǎn)要討論如下:
①數(shù)據(jù)抓取部分抓取程序中的重復(fù)抓取過(guò)濾的問(wèn)題尚存在一些缺陷,有待進(jìn)一步的算法改進(jìn)。②本文所抓取數(shù)據(jù)量不過(guò)兩千多,因此選擇用R軟件抓取數(shù)據(jù),但是,抓取過(guò)程中,由于網(wǎng)速不穩(wěn)定和R語(yǔ)言本身對(duì)并發(fā)處理的欠缺性,抓取過(guò)程也比較緩慢,整個(gè)抓取數(shù)據(jù)程序跑完大概需要4小時(shí)。③有些數(shù)據(jù)網(wǎng)站并沒(méi)有給出來(lái),所以也無(wú)法爬取,比如購(gòu)買人數(shù)、購(gòu)買人購(gòu)物信息、以及網(wǎng)店成交量等等。④數(shù)據(jù)分析部分是以直觀、易理解的方式展現(xiàn)給花卉企業(yè)決策者,幫助決策者在運(yùn)營(yíng)過(guò)程中正確把握買家需求,做出正確的運(yùn)營(yíng)決策。在后續(xù)的研究工作中,將進(jìn)一步的挖掘更深層次信息。比如需要對(duì)商品簡(jiǎn)介、材料包裝和花語(yǔ)文本字段進(jìn)行文本挖掘,挖掘出隱藏信息。
本文通過(guò)抓取花卉市場(chǎng)的網(wǎng)站數(shù)據(jù)信息,并應(yīng)用數(shù)據(jù)挖掘技術(shù)對(duì)這些數(shù)據(jù)進(jìn)行分析、挖掘,達(dá)到幫助花卉企業(yè)決策、提高客戶滿意度、提升經(jīng)濟(jì)效益的目。XML文檔極大程度的減少了結(jié)構(gòu)轉(zhuǎn)換時(shí)間,數(shù)據(jù)的解析也更為快速,隨著網(wǎng)頁(yè)結(jié)構(gòu)的復(fù)雜化,研究一種適用所有類型Web頁(yè)面的智能抓取信息方法成為網(wǎng)頁(yè)信息抓取今后發(fā)展的重要方向。
參考文獻(xiàn):
[1]蔣宏潮,王大亮,班曉娟.基于XML的Web數(shù)據(jù)半自動(dòng)采集[J].計(jì)算機(jī)工程,2009,35(21).
[2]王實(shí),高文,李錦濤.Web數(shù)據(jù)挖掘[J].計(jì)算機(jī)科學(xué),2000,27(4).
[3]陳琛.基于XML文檔中XPath查詢與結(jié)構(gòu)研究[J].電子技術(shù)與軟件工程,2015,14.
[4]程洪濤.基于XML的非結(jié)構(gòu)化文本數(shù)據(jù)轉(zhuǎn)換研究與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī),2013,9.
[5]汪偉,鄒璇,詹雪.論數(shù)據(jù)挖掘中的數(shù)據(jù)預(yù)處理技術(shù)[J].煤炭技術(shù),2013,5.