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