第1章互聯(lián)網(wǎng)大數(shù)據(jù)概述_第1頁
第1章互聯(lián)網(wǎng)大數(shù)據(jù)概述_第2頁
第1章互聯(lián)網(wǎng)大數(shù)據(jù)概述_第3頁
第1章互聯(lián)網(wǎng)大數(shù)據(jù)概述_第4頁
第1章互聯(lián)網(wǎng)大數(shù)據(jù)概述_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第1章互聯(lián)網(wǎng)大數(shù)據(jù)概述

1.1認(rèn)識大數(shù)據(jù)

1.1.1大數(shù)據(jù)的定義

大數(shù)據(jù)(bigdata)這個詞,在如今對人們來說都不陌生,大數(shù)據(jù)甚至現(xiàn)在與我們的

生活息息相關(guān)?!按髷?shù)據(jù)”和“人工智能”儼然已經(jīng)成為科技行業(yè)最具價值的領(lǐng)域,

無論是蘋果、谷歌還是阿里、騰訊,所有的科技公司都在這兩個領(lǐng)域投入了大量的心

血。那么什么是大數(shù)據(jù)呢?大數(shù)據(jù)到底有什么特征呢?

最早,麥肯錫公司(McKinseyCompany)給出的定義是:數(shù)據(jù),已經(jīng)滲透到當(dāng)今每

一個行業(yè)和業(yè)務(wù)職能領(lǐng)域,成為重要的生產(chǎn)要素。人們對于海量數(shù)據(jù)的挖掘和運用,

預(yù)示著新一波生產(chǎn)率增長和消費者盈余浪潮的到來。

大數(shù)據(jù),是指無法在一定時間范圍內(nèi)用常規(guī)軟件工具進行捕捉、管理和處理的數(shù)

據(jù)集合,是需要新處理模式才能具有更強的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的具

有海量、高增長率和多樣化等特點的信息資產(chǎn)。簡而言之,大數(shù)據(jù)就是數(shù)據(jù)量非常大、

數(shù)據(jù)種類繁多、無法用常規(guī)歸類方法應(yīng)用計算的數(shù)據(jù)集成。

大數(shù)據(jù)的本質(zhì)意義就是對數(shù)據(jù)進行專業(yè)化的處理而不在于數(shù)據(jù)信息的龐大。我們

可以把大數(shù)據(jù)比作工廠,而生產(chǎn)效率是其中的關(guān)鍵,關(guān)鍵是提高對數(shù)據(jù)這個原材料的

“加工能力”,同時,通過“深加工”實現(xiàn)數(shù)據(jù)的持續(xù)“增值”。

在當(dāng)下的大數(shù)據(jù)時代,信息傳輸非常迅捷。據(jù)麥肯錫全球研究院(McKinseyGlobal

Institute)估計,每一秒鐘就有543TB的數(shù)據(jù)流過國界,其總數(shù)據(jù)量相當(dāng)于1300萬份莎

士比亞全集。

數(shù)據(jù)的快速流動對國家的國內(nèi)(或地區(qū))生產(chǎn)總值(GDP)會帶來翻天覆地的變化,各

種科技成果也是與日俱增。更比傳統(tǒng)的物流運輸有著絕對的優(yōu)勢??梢赃@么說,數(shù)據(jù)

是全球資本的生命線。

換句話說,跨國界的信息交流比運輸糧食和生活用品有更高的經(jīng)濟價值。畢竟,

數(shù)據(jù)就是金錢。一直以來,大數(shù)據(jù)與商業(yè)就密不可分。因為利用數(shù)據(jù)能預(yù)測公眾喜好,

自然誰都想來分一杯羹。

在這看來大數(shù)據(jù)給人們帶來的絕對是一場巨變。但是,美國的科技公司和金融行

業(yè)的巨鱷們已經(jīng)把這個概念理解得很透徹了,而大多數(shù)人還是需要花時間去消化理解

這一點的。這就是為什么科技和金融的行業(yè)巨鱷們正在努力爭取國際上的認(rèn)可,他們

想方設(shè)法掌握這些重要的大數(shù)據(jù)資源。

大數(shù)據(jù)的分析與應(yīng)用目前已經(jīng)滲透到方方面面。例如我們喜歡看什么樣的新聞,

或者我們騎共享單車常去哪里,等等,都可以通過大數(shù)據(jù)分析得出結(jié)論。在共享單車

GPS(全球定位系統(tǒng))定位和物聯(lián)網(wǎng)精細(xì)化管理下,每一個騎行單車的用戶的騎行次數(shù)、

軌跡、時長、高頻騎行時間等,都變成了大數(shù)據(jù)沉淀在共享單車智能出行共享平臺,

然后通過云計算等匯總、篩選、分析出更具價值的信息,了解哪些區(qū)域的人們最需要共

享單車,哪些區(qū)域則相反;哪個時段人們的出行更多;人們有哪些潛在的產(chǎn)品需求等。

此外,有的互聯(lián)網(wǎng)公司利用搜索關(guān)鍵詞預(yù)測禽流感的散布,統(tǒng)計學(xué)家內(nèi)特?西爾

弗(NateSilver)曾利用大數(shù)據(jù)預(yù)測2012年美國選舉結(jié)果,麻省理工學(xué)院利用手機定位數(shù)

據(jù)和交通數(shù)據(jù)建立城市規(guī)劃等。以上這些都是大數(shù)據(jù)的強大應(yīng)用。

1.1.2大數(shù)據(jù)的特征

大數(shù)據(jù)具有以下特征。

1.數(shù)據(jù)體量極為巨大

如果單從存儲量方面來考量的話,從最小的數(shù)據(jù)存儲單位bit(指一個二進制位)開

始,按順序往上是Byte(字節(jié))、KB(千字節(jié))、MB(兆字節(jié))、GB(吉字節(jié)或十億字節(jié))、

TB(太字節(jié)或萬億字節(jié))、PB(拍字節(jié)或千萬億字節(jié))、EB(艾字節(jié)或百億億字節(jié))……那

么截至目前,人類生產(chǎn)的所有印刷材料的數(shù)據(jù)量可達數(shù)百PB,而歷史上有記載開始人

類說過的所有話的數(shù)據(jù)量大約要以EB來衡量。截至目前,人類生產(chǎn)的所有印刷材料

的數(shù)據(jù)量是200PB,而歷史上全人類說過的所有話的數(shù)據(jù)量大約是5EB(lEB-2'°PB)o

2.數(shù)據(jù)類型繁多

相對于以往便于存儲的以文本為主的結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)越來越多,包括

網(wǎng)絡(luò)日志、音頻、視頻、圖片、地理位置信息等,這些多類型的數(shù)據(jù)對數(shù)據(jù)的處理能

力提出了更高的要求。

3.價值密度低

價值密度的高低與數(shù)據(jù)總量的大小成反比。數(shù)據(jù)總量越大,無效冗余的數(shù)據(jù)則

越多。

4.處理速度快

處理速度快是大數(shù)據(jù)區(qū)分于傳統(tǒng)數(shù)據(jù)挖掘的最顯著特征。根據(jù)IDC(互聯(lián)網(wǎng)數(shù)據(jù)中

心)“數(shù)字宇宙”的報告,預(yù)計在2020年,全球數(shù)據(jù)使用量將達到35.2ZB(1ZB=1O24EB)?

大數(shù)據(jù)大致可分為三類:

(1)傳統(tǒng)企業(yè)數(shù)據(jù)。包括CRMsystems(客戶關(guān)系管理系統(tǒng))的消費者數(shù)據(jù)、傳統(tǒng)的

ERP(企業(yè)資源計劃)數(shù)據(jù)、庫存數(shù)據(jù)以及賬目數(shù)據(jù)等。

(2)機器和傳感器數(shù)據(jù)。包括呼叫記錄、智能儀表數(shù)據(jù)、工業(yè)設(shè)備傳感器數(shù)據(jù)、

設(shè)備日志、交易數(shù)據(jù)等。

(3)社交數(shù)據(jù)。包括用戶行為記錄、反饋數(shù)據(jù)等。如人們在Twitter(推特)、Facebook

(臉書)這樣的社交媒體平臺留下的數(shù)據(jù)。

【案例】目前,有超過八千多個電視頻道在不停地播放最新的運動賽事,對體育

愛好者來說,追蹤起來是一件很困難的事情。

而現(xiàn)在市面上開發(fā)了一個可追蹤所有運動賽事的應(yīng)用程序RUWT,它已經(jīng)可以在

iOS(蘋果系統(tǒng))和Android(安卓系統(tǒng))設(shè)備,以及在Web瀏覽器上使用,它不斷地分析

運動數(shù)據(jù)流來讓球迷知道他們應(yīng)該轉(zhuǎn)換成哪個臺看到想看的節(jié)目,在電視的哪個頻道

上找到,并讓他們在比賽中進行投票。對于TiVo用戶等來說,實際上RUWT就是讓

他們改變頻道調(diào)到一個比賽中。

該程序能基于賽事的緊張激烈程度對比賽進行評分排名,用戶可通過該應(yīng)用程序

找到值得收看的頻道和賽事。

1.1.3未來十年大數(shù)據(jù)分析的發(fā)展趨勢

未來十年將推動大數(shù)據(jù)分析行業(yè)發(fā)展的主要趨勢有以下一些方面。

(1)公有云供應(yīng)商正擴大其影響力。

大數(shù)據(jù)行業(yè)正圍繞三大主要公有云供應(yīng)商,即亞馬遜公司旗下云計算服務(wù)平臺

AWS、微軟的云計算服務(wù)平臺Azure和谷歌云平臺,大部分軟件供應(yīng)商正在構(gòu)建可以

在這些平臺運行的解決方案。除此之外,數(shù)據(jù)庫供應(yīng)商正在提供托管的laaS(基礎(chǔ)架構(gòu)

即服務(wù))和PaaS(平臺即服務(wù))數(shù)據(jù)湖,鼓勵客戶和合作伙伴開發(fā)新的應(yīng)用程序,并將其

遷移到其中的舊應(yīng)用程序中。因此,純數(shù)據(jù)平臺、NoSQL供應(yīng)商在多元化的公有云供

應(yīng)商占優(yōu)勢的大型數(shù)據(jù)領(lǐng)域逐漸被陷入邊緣化。

(2)公有云優(yōu)于私有云的優(yōu)勢繼續(xù)擴大。

公有云正逐步成為客戶群的大數(shù)據(jù)分析平臺。這是因為公有云解決方案比內(nèi)部部

署堆棧更為成熟,增加了更豐富的功能,且成本日益增加。另外,公有云正在增加其

應(yīng)用程度編程接口生態(tài)系統(tǒng),并加快開發(fā)管理工具的速度。

(3)加速融合以讓企業(yè)實現(xiàn)商業(yè)價值。

用戶開始加快將孤立的大數(shù)據(jù)資產(chǎn)融合到公有云的速度,而公有云廠商也在優(yōu)化

困擾私有大數(shù)據(jù)架構(gòu)的跨業(yè)務(wù)孤島。同樣重要的是,云數(shù)據(jù)和本地數(shù)據(jù)解決方案正融

合到集成產(chǎn)品中,旨在降低復(fù)雜性并加快實現(xiàn)業(yè)務(wù)價值。更多的解決方案提供商正在

提供標(biāo)準(zhǔn)化的應(yīng)用程序編程接口(API),以簡化訪問,加速開發(fā),并在整個大數(shù)據(jù)解決

方案堆棧中實現(xiàn)更全面的管理。

(4)大數(shù)據(jù)初創(chuàng)公司將越來越復(fù)雜的人工智能(AI)注意應(yīng)用程序推向市場。

過去幾年來,許多新的數(shù)據(jù)庫、流處理和數(shù)據(jù)初創(chuàng)公司加入到市場中。不少公司

也開始通過AI的解決方案加入到市場競爭中。其中大部分創(chuàng)新方案都是為公有云或混

合云部署而設(shè)計的。

(5)新興解決方案逐漸替代傳統(tǒng)方法。

更多的大數(shù)據(jù)平臺供應(yīng)商將涌現(xiàn)出融合物聯(lián)網(wǎng)、區(qū)塊鏈和流計算的下一代方法。

這些大數(shù)據(jù)平臺主要針對機器學(xué)習(xí)、深度學(xué)習(xí)和人工智能管理端到端的DevOps(一組

過程方法與系統(tǒng)的統(tǒng)稱)管理進行優(yōu)化。此外,不少大數(shù)據(jù)分析平臺正在為AI微服務(wù)

架構(gòu)設(shè)計邊緣設(shè)備。

(6)Hadoop的穩(wěn)定地位。

如今更多的跡象表明,市場將Hadoop視為傳統(tǒng)大數(shù)據(jù)技術(shù),而不是顛覆性業(yè)務(wù)應(yīng)

用程序的戰(zhàn)略平臺。不過,Hadoop作為一種成熟技術(shù),被廣泛用于用戶的IT組織的

關(guān)鍵用例,并且在許多組織中仍然有很長的使用壽命??紤]到這一前景,供應(yīng)商通過

在獨立開發(fā)的硬件和軟件組件之間實現(xiàn)更平滑的互操作性,不斷提高產(chǎn)品性能。

(7)打包的大數(shù)據(jù)分析應(yīng)用程序正變得越來越廣泛。

未來十年,更多服務(wù)將自動調(diào)整其嵌入式機器學(xué)習(xí)、深度學(xué)習(xí)和AI模型,以持續(xù)

提供較佳的業(yè)務(wù)成果。這些服務(wù)將納入預(yù)先訓(xùn)練的模式,客戶可以調(diào)整和擴展到自己

的特定需求。

1.2常用大數(shù)據(jù)處理、分析工具介紹

接下來介紹一些大數(shù)據(jù)的存儲工具、開發(fā)以及挖掘工具,以便更好地展現(xiàn)在人們

的面前給大家?guī)淼谋憷?/p>

1.2.1大數(shù)據(jù)的存儲工具

1.日立公司的產(chǎn)品

日立在提供了一些大數(shù)據(jù)產(chǎn)品以外,更與Pentaho軟件公司合作開發(fā)了大數(shù)據(jù)分析

工具、日立超級橫向擴展平臺(HSP)、HSP技術(shù)架構(gòu)以及日立視頻管理平臺(VMP)。后

一個例子專門針對大視頻這個方興未艾的大數(shù)據(jù)子集,面向視頻監(jiān)控及其他視頻密集

型存儲應(yīng)用領(lǐng)域。

2.DDN的產(chǎn)品

DataDirectNetworks(DDN)有一批面向大數(shù)據(jù)存儲的解決方案。比如說,其高性能

SFA7700X文件存儲可以自動分層到WOS(WebObjectScaler,基于對象的云存儲裝置),

支持快速收集、同時分析和經(jīng)濟高效地保留大數(shù)據(jù)。

3.SpectraBlackPearl

SpectraLogic公司的BlackPearl深度存儲網(wǎng)關(guān)為基于SAS(串行連接SCSI)的磁盤、

SMR(瓦楞式堆疊磁盤)降速磁盤或磁帶提供了對象存儲接口,所有這些技術(shù)都可以放

在存儲環(huán)境中BlackPearl的后面。

4.KaminarioK2

Kaminario公司提供了另一種大數(shù)據(jù)存儲平臺,其全閃存陣列正在許多大數(shù)據(jù)應(yīng)用

領(lǐng)域找到一席之地。

5.Caringo公司的產(chǎn)品

Caringo公司旨在發(fā)掘數(shù)據(jù)的價值,解決在其中產(chǎn)生的一系列問題,并大規(guī)模保護、

管理、組織和搜索數(shù)據(jù)。有了旗艦產(chǎn)品Swarm,用戶無須將數(shù)據(jù)遷移到不同的解決方

案,即可實現(xiàn)長期保存、交付和分析,因而降低總體擁有成本。

6.Infogix

Infogix企業(yè)數(shù)據(jù)分析平臺基于五項核心功能:數(shù)據(jù)質(zhì)量、事務(wù)監(jiān)控、均衡及協(xié)調(diào)、

身份匹配、行為分析以及預(yù)測模型。這些功能據(jù)說可幫助公司提高運營效率、帶來新

的收入、確保合規(guī),并獲得競爭優(yōu)勢。該平臺可以實時檢測出現(xiàn)的數(shù)據(jù)錯誤,并自動

實行全面分析,以優(yōu)化大數(shù)據(jù)項目的表現(xiàn)。

7.Avere混合云

Avere提供了另一種大數(shù)據(jù)存儲方案,其Avere混合云部署在混合云基礎(chǔ)設(shè)施中的

各種用例。物理FXT集群用于NAS(網(wǎng)絡(luò)附加存儲)優(yōu)化這種用例,充分利用基于磁盤

的現(xiàn)有NAS系統(tǒng)前面的全閃存高性能層。FXT集群使用緩存,以便自動加快活躍數(shù)據(jù),

使用集群擴展性能(添加更多的處理器和內(nèi)存)及容量(添加更多的固態(tài)硬盤),并將部署

在廣域網(wǎng)上的核心存儲延遲隱藏起來。用戶發(fā)覺它是可以加速渲染、基因組分析、金

融模擬、軟件工具和二進制代碼庫等性能的好方法。

8.DriveScale

大數(shù)據(jù)通常需要存儲在本地磁盤上,這意味著為了在大數(shù)據(jù)集群的規(guī)模不斷擴大

時,能實現(xiàn)效率和擴展性,就需要保持計算和存儲之間的邏輯關(guān)系。于是出現(xiàn)了一個

問題:如何將磁盤從服務(wù)器分離開來,又繼續(xù)在處理器/內(nèi)存組合和驅(qū)動器之間提供同

樣的邏輯關(guān)系?如何實現(xiàn)共享存儲池的成本、規(guī)模和可管理性等方面的效率,同時仍

提供局部性的好處?DriveScale通過利用Hadoop數(shù)據(jù)存儲,就可以完美地做到這一點。

9.Hedvig

Hedvig分布式存儲平臺提供了一個統(tǒng)一性的解決方案,就是在綜合降低成本的同

時存儲的性能得到大幅的提升,以支持任何應(yīng)用程序、虛擬機管理程序、容器或云.

它可以針對數(shù)據(jù)塊、文件和對象存儲,為任何規(guī)模的任何計算提供存儲,具有可編程

性,而且支持任何操作系統(tǒng)、虛擬機管理程序或容器。此外,混合多站點復(fù)制使用獨

特的災(zāi)難恢復(fù)策略來保護每個應(yīng)用程序,并通過跨多個數(shù)據(jù)中心或云的存儲集群提供

高可用性。最后,高級數(shù)據(jù)服務(wù)讓用戶可以借助可按照卷來選擇的一系列企業(yè)服務(wù),

定制存儲。

10.Nimble

Nimble存儲預(yù)測閃存平臺據(jù)說可顯著提高分析應(yīng)用和大數(shù)據(jù)工作負(fù)載的性能。它

通過結(jié)合閃存性能和預(yù)測分析,防止IT復(fù)雜性導(dǎo)致的數(shù)據(jù)速度面臨障礙。

1.2.2大數(shù)據(jù)的軟件開發(fā)工具

在使用大數(shù)據(jù)的同時,規(guī)模也是日益劇增,會給企業(yè)對大數(shù)據(jù)的管理和分析帶來

挑戰(zhàn),下面是一些大數(shù)據(jù)開發(fā)過程中常用的工具。

1.ApacheHive

Hive是一個建立在Hadoop上的開源數(shù)據(jù)倉庫基礎(chǔ)設(shè)施,通過Hive可以很容易地

進行數(shù)據(jù)的ETL(抽取、轉(zhuǎn)換、加載),對數(shù)據(jù)進行結(jié)構(gòu)化處理,并對Hadoop上大數(shù)據(jù)

文件進行查詢和處理等。Hive提供了一種簡單的類似SQL的查詢語言——HiveQL,

這為熟悉SQL的用戶查詢數(shù)據(jù)提供了方便。

2.JaspersoftBl套件

Jaspersoft包是一個通過數(shù)據(jù)庫列生成報表的開源軟件。行業(yè)領(lǐng)導(dǎo)者發(fā)現(xiàn)Jaspersoft

軟件是一流的,許多企業(yè)已經(jīng)使用它來將SQL表轉(zhuǎn)化為PDF,這使每個人都可以在會

議上對其進行審議。另外,JasperReports提供了一個連接配置單元來替代HBase。

3.1010data

lOlOdata是一個分析型云服務(wù),旨在為華爾街的客戶提供服務(wù),甚至包括NYSE

Euronext(紐約泛歐證券交易所)、游戲和電信的客戶。它在設(shè)計上支持可伸縮性的大規(guī)

模并行處理。它也有它自己的查詢語言,支持SQL函數(shù)和廣泛的查詢類型,包括圖和

時間序列分析。這個私有云的方法減少了客戶在基礎(chǔ)設(shè)施管理和擴展方面的壓力。

4.Actian

Actian(也稱IngresCorp)擁有超過1萬客戶而且正在擴增。它通過VectorWise以及

對ParAccel實現(xiàn)了擴展。這些發(fā)展分別導(dǎo)致了ActianVector和ActianMatrix的創(chuàng)建。

它可選擇Apache、Cloudera、Hortonworks以及其他發(fā)行版本。

5.PentahoBusinessAnalytics

從某種意義上說,Pentaho與Jaspersoft相比,盡管Pentaho開始于報告生成引擎,

但它目前通過簡化從新來源中獲取信息的過程來支持大數(shù)據(jù)處理。Pentaho的工具可以

連接到非SQL數(shù)據(jù)庫,例如MongoDB和CassandraoPeterWayner指出,PentahoData(一

個更有趣的圖形編程界面工具)有很多內(nèi)置模塊,你可以把它們拖放到一個圖片上,然

后將它們連接起來。

6.PlacedAnalytics

利用腳本語言以及API,PlacedAnalytics能夠提供針對移動和網(wǎng)絡(luò)應(yīng)用的詳細(xì)用

戶行為分析,包括用戶使用時間和地理位置信息。這些可以幫助開發(fā)者的應(yīng)用更好地

吸引廣告商,也可以幫助開發(fā)者對自己的應(yīng)用進行改善。

7.Cloudera

Cloudera正在努力為開源Hadoop提供支持,同時將數(shù)據(jù)處理框架延伸到一個全面

的“企業(yè)數(shù)據(jù)中心”范疇,這個數(shù)據(jù)中心可以作為首選目標(biāo)和管理企業(yè)所有數(shù)據(jù)的中

心點。Hadoop可以作為目標(biāo)數(shù)據(jù)倉庫、高效的數(shù)據(jù)平臺,或現(xiàn)有數(shù)據(jù)倉庫的ETL來源。

企業(yè)規(guī)模可以用作集成Hadoop與傳統(tǒng)數(shù)據(jù)倉庫的基礎(chǔ)。Cloudera致力于成為數(shù)據(jù)管理

的“重心”。

8.Keen10

Keen10是個強大的移動應(yīng)用分析工具,開發(fā)者只需要簡單到一行代碼,就可以跟

蹤他們想要的關(guān)于他們應(yīng)用的任何信息。開發(fā)者接下來只需做一些Dashboard(類似儀

表盤的智能顯示界面)或者查詢的工作即可。

9.TalendOpenStudio

Talend工具用于協(xié)助進行數(shù)據(jù)質(zhì)量、數(shù)據(jù)集成和數(shù)據(jù)管理等方面的工作。Talend

是一個統(tǒng)一的平臺,它通過提供一個統(tǒng)一的、跨企業(yè)邊界生命周期管理的環(huán)境,使數(shù)

據(jù)管理和應(yīng)用更簡單便捷。這種設(shè)計可以幫助企業(yè)構(gòu)建靈活、高性能的企業(yè)架構(gòu),在

此架構(gòu)下,集成并啟用百分之百開源服務(wù)的分布式應(yīng)用程序變?yōu)榭赡堋?/p>

10.ApacheSpark

ApacheSpark是Hadoop開源生態(tài)系統(tǒng)的新成員,它提供了一個比Hive更快的查

詢引擎,因為它依賴于自己的數(shù)據(jù)處理框架而不是依靠Hadoop的HDFS(Hadoop分布

式文件系統(tǒng))服務(wù)。同時,它還用于事件流處理、實時查詢和機器學(xué)習(xí)等方面。

1.2.3大數(shù)據(jù)的挖掘工具

隨著現(xiàn)代社會對數(shù)據(jù)需求量爆炸式的增長,我們需要借助更有效、更快捷的工具

進行挖掘工作,從而幫助我們更輕松地從巨大的數(shù)據(jù)集中找出關(guān)系、集群、模式、分

類信息等。借助這類工具可以幫助我們做出最準(zhǔn)確的決策,為我們的業(yè)務(wù)獲取更多

收益。

以下是幾種相對較好的數(shù)據(jù)挖掘工具,可以幫助大家從各種角度分析大數(shù)據(jù),并

通過數(shù)據(jù)做出正確的業(yè)務(wù)決策。

1.RapidMiner

RapidMiner是一個用于機器學(xué)習(xí)、數(shù)據(jù)挖掘和分析的試驗環(huán)境,同時用于研究真

實世界的數(shù)據(jù)挖掘。它提供的實驗由很多的算子構(gòu)成,這些算子由詳細(xì)的XML文件記

錄,并被RapidMiner圖形化的用戶接口表現(xiàn)出來。RapidMiner為主要的機器學(xué)習(xí)過程

提供了超過500個算子,并且它結(jié)合了學(xué)習(xí)方案和WEKA學(xué)習(xí)環(huán)境的屬性評估器。它

是一個可以用來做數(shù)據(jù)分析的獨立的工具,同樣也是一個數(shù)據(jù)挖掘引擎,可以用來集

成產(chǎn)品中的工具。

2.WEKA

WEKA(WaikatoEnvironmentforKnowledgeAnalysis,懷卡托智能分析環(huán)境)是一款

非常復(fù)雜的數(shù)據(jù)挖掘工具,它支持幾種經(jīng)典的數(shù)據(jù)挖掘任務(wù),顯著的數(shù)據(jù)預(yù)處理、集

群、分類、回歸、虛擬化以及功能選擇。它的技術(shù)基于假設(shè)數(shù)據(jù)是以一種單個文件或

關(guān)聯(lián)的,每個數(shù)據(jù)點都被許多屬性標(biāo)注。WEKA使用Java的數(shù)據(jù)庫鏈接能力可以訪問

SQL數(shù)據(jù)庫,并可以處理一個數(shù)據(jù)庫的查詢結(jié)果。它主要的用戶接口是Explorer,也

同樣支持相同功能的命令行,或是一種基于組件的知識流接口。

3.R軟件

R軟件是另一種較為流行的GNU開源數(shù)據(jù)挖掘工具,作為一款用于統(tǒng)計分析和圖

形化的計算機語言及分析工具,為了保證性能,它主要是由C語言和FORTRAN語言

編寫的。此外,為方便使用,R軟件提供了一種腳本語言,即R語言。R支持一系列

分析技術(shù),包括統(tǒng)計檢驗、預(yù)測建模、數(shù)據(jù)可視化等。R軟件的優(yōu)點在于函數(shù)都己寫

好,用戶只需知道參數(shù)的形式即可,如果參數(shù)形式不對,R軟件也能“智能地”幫你

適應(yīng)?

4.Orange數(shù)據(jù)挖掘軟件

Orange是一個基于組件的數(shù)據(jù)挖掘和機器學(xué)習(xí)軟件套裝,它的功能、界面友好且

很強大,具有快速而又多功能的可視化編程前端,以便瀏覽數(shù)據(jù)分析和可視化,其綁

定了Python以進行腳本開發(fā)。它包含了完整的一系列的組件以進行數(shù)據(jù)預(yù)處理,并提

供了數(shù)據(jù)賬目、過渡、建模、模式評估和勘探的功能。其由C++和Python開發(fā),它的

圖形庫是由跨平臺的Qt框架開發(fā)。Orange軟件可以對數(shù)據(jù)和模型進行多種圖形化展

示,并能智能搜索合適的可視化形式,支持對數(shù)據(jù)的交互式探索。

5.KNIME

KNIME(KonstanzInformationMiner,康斯坦茨信息挖掘工具)是一款開源的進行數(shù)

據(jù)集成、數(shù)據(jù)分析、數(shù)據(jù)處理的綜合平臺。它讓用戶有能力以可視化的方式創(chuàng)建數(shù)據(jù)

流或數(shù)據(jù)通道,可選擇性地運行一些或所有分析步驟,然后檢查結(jié)果、模型和可交互

的視圖。此外,KNIME基于Eclipse并通過插件的方式來提供更多的功能,用戶可以

為文件、圖片和時間序列加入處理模塊,并可以集成到其他各種各樣的開源項目中,

如R語言和WEKA?

6.JHepWork

JHepWork是一種為科學(xué)家、工程師和學(xué)生所設(shè)計的免費的開源數(shù)據(jù)分析框架,其

主要是用開源庫來創(chuàng)建一個數(shù)據(jù)分析環(huán)境,并提供了豐富的用戶接口,以此來和那些

收費的軟件競爭。它的主要功能是便于繪制科學(xué)計算用的二維和三維的圖形,并包含

了用Java實現(xiàn)的數(shù)學(xué)科學(xué)庫、隨機數(shù)和其他的數(shù)據(jù)挖掘算法。JHepWork基于一個高

級的編程語言Jython,當(dāng)然,Java代碼同樣可以用來調(diào)用JHepWork的數(shù)學(xué)和圖形庫。

7.NLTK

NLTK(NaturalLanguageToolKit,自然語言工具包)最適用于語言處理任務(wù),因為

它可以提供一個語言處理工具,包括數(shù)據(jù)挖掘、機器學(xué)習(xí)、數(shù)據(jù)抓取、情感分析等各

種語言處理任務(wù)。安裝NLTK后,將一個包拖拽到你最喜愛的任務(wù)中,你就可以去做

其他事了。

8.Pentaho

Pentaho為數(shù)據(jù)集成、業(yè)務(wù)分析以及大數(shù)據(jù)處理提供一個全面的平臺。使用這種商

業(yè)工具,我們可以輕松地混合各種來源的數(shù)據(jù),通過對業(yè)務(wù)數(shù)據(jù)進行分析可以為未來

的決策提供正確的信息指導(dǎo)。

以上介紹的幾款軟件都是優(yōu)秀的開源數(shù)據(jù)挖掘軟件,各有所長,同時也各有缺點。

【案例】

數(shù)據(jù)挖掘算法

大數(shù)據(jù)分析的理論核心就是數(shù)據(jù)挖掘算法,各種數(shù)據(jù)挖掘的算法基于不同的數(shù)據(jù)

類型和格式才能更加科學(xué)地呈現(xiàn)出數(shù)據(jù)本身具備的特點,也正是因為這些被全世界統(tǒng)

計學(xué)家所公認(rèn)的各種統(tǒng)計方法才能深入數(shù)據(jù)內(nèi)部,挖掘出公認(rèn)的價值。另外一個方面

也是因為有這些數(shù)據(jù)挖掘的算法才能更快速地處理大數(shù)據(jù),如果一個算法得花上好幾

年才能得出結(jié)論,那大數(shù)據(jù)的價值也就無從說起了。

1.2.4大數(shù)據(jù)的可視化工具

大數(shù)據(jù)的分析是建立在大數(shù)據(jù)可視化的前提之下的,更是其最重要的組成部分之

-O當(dāng)原始數(shù)據(jù)流被以圖像形式表示時,在后期就可以比較容易地根據(jù)其做出準(zhǔn)確

決策。

大數(shù)據(jù)可視化工具應(yīng)該具備的特征為:①能夠處理不同類型的傳入數(shù)據(jù);②能夠

應(yīng)用不同種類的過濾器來調(diào)整結(jié)果;③能夠在分析過程中與數(shù)據(jù)集進行交互;④能夠

連接到其他軟件來接收輸入數(shù)據(jù),或為其他軟件提供輸入數(shù)據(jù);⑤能夠為用戶提供協(xié)

作選項。

下面介紹幾種目前較受歡迎的大數(shù)據(jù)可視化工具。

(1)Jupyter:大數(shù)據(jù)可視化的一站式商店。

Jupyter是一個開源項目,通過十多種編程語言實現(xiàn)大數(shù)據(jù)分析、可視化和軟件開

發(fā)的實時協(xié)作。它的界面包含代碼輸入窗口,并通過運行輸入的代碼以基于所選擇的

可視化技術(shù)提供視覺可讀的圖像。

JupyterNotebook的功能多而強大,可以在團隊中共享,以實現(xiàn)內(nèi)部協(xié)作,并促進

團隊共同合作進行數(shù)據(jù)分析。除此以外,Jupyter還能夠與Spark這樣的多框架進行交

互,這使得對從具有不同輸入源的程序收集的大量密集的數(shù)據(jù)進行數(shù)據(jù)處理時,Jupyter

能夠提供一個全能的解決方案。

(2)Tableau:AI、大數(shù)據(jù)和機器學(xué)習(xí)應(yīng)用可視化的最佳解決方案。

Tableau是大數(shù)據(jù)可視化的市場領(lǐng)導(dǎo)者之一,在為大數(shù)據(jù)操作、深度學(xué)習(xí)算法和多

種類型的AI應(yīng)用程序提供交互式數(shù)據(jù)可視化方面尤為高效。Tableau可以與Amazon

AWS、MySQL、Hadoop,Teradata和SAP協(xié)作,使之成為一個能夠創(chuàng)建詳細(xì)圖形和展

示直觀數(shù)據(jù)的多功能工具。這樣高級管理人員和中間鏈管理人員能夠基于包含大量信

息且容易讀懂的Tableau圖形做出基礎(chǔ)決策。

(3)Google圖表:Google支持的免費而強大的整合功能。

谷歌圖表是大數(shù)據(jù)可視化的最佳解決方案之一,Google對其提供大力的技術(shù)支持,

同時通過Google圖表分析的數(shù)據(jù)也用于訓(xùn)練Google研發(fā)的ALGoogle圖表提供了大

量的可視化類型,從簡單的餅圖、時間序列一直到多維交互矩陣都有。圖表可供調(diào)整

的選項很多。該工具將生成的圖表以HTML5/SVG呈現(xiàn),因此它們可與任何瀏覽器兼

容。Google圖表對VML的支持確保了其與舊版IE瀏覽器的兼容性,并且可以將圖表

移植到最新版本的Android和iOS系統(tǒng)上。更重要的是,Google圖表結(jié)合了來自Google

地圖等多種Google服務(wù)的數(shù)據(jù),生成的交互式圖表不僅可以實時輸入數(shù)據(jù),還可以使

用交互式儀表板進行控制。

(4)D3.js:以任何您需要的方式直觀地顯示大數(shù)據(jù)。

D3.js代表DataDrivenDocument,是一個用于實時交互式大數(shù)據(jù)可視化的JS庫。

因為這不是一個工具,所以用戶在使用它來處理數(shù)據(jù)之前,需要對JavaScript有一個很

好的理解,并能以一種能被其他人理解的形式呈現(xiàn)。除此之外,這個JS庫將數(shù)據(jù)以SVG

和HTML5格式呈現(xiàn),所以像IE7和IE8這樣的舊式瀏覽器不能利用D3.js功能。

從不同來源收集的數(shù)據(jù)如大規(guī)模數(shù)據(jù)將與實時的DOM綁定并以極快的速度生成

交互式動畫(2D和3D)。D3架構(gòu)允許用戶通過各種附件和插件密集地重復(fù)使用代碼。

以上4種可視化工具只不過是大量在線或獨立的數(shù)據(jù)可視化解決方案和工具中的

一部分。使用它們的公司的目的是找到適合他們的工具,并能夠使用這些工具幫助他

們將輸入的原始數(shù)據(jù)轉(zhuǎn)化為一系列清晰易懂的圖像和圖表,通過可視化讓他們能夠做

出有證據(jù)支持的決策。

小結(jié)

大數(shù)據(jù)的本質(zhì)意義是對數(shù)據(jù)進行專業(yè)化的處理而不在于數(shù)據(jù)信息的龐大,對大數(shù)

據(jù)進行處理分析需要借助存儲工具、軟件開發(fā)工具和數(shù)據(jù)挖掘工具,以及大數(shù)據(jù)可視

化工具。我們借助更有效、更快捷的工具進行數(shù)據(jù)挖掘,并建立在大數(shù)據(jù)可視化(將原

始數(shù)據(jù)流以圖像形式表示)的前提之下對大數(shù)據(jù)進行分析,從而幫助我們做出有證據(jù)支

持的決策。

第2章互聯(lián)網(wǎng)大數(shù)據(jù)采集與

獲取實戰(zhàn)要領(lǐng)

數(shù)據(jù)采集,又稱數(shù)據(jù)獲取,是利用一種裝置,從系統(tǒng)外部采集數(shù)據(jù)并輸入到系統(tǒng)

內(nèi)部的一個接口。比如攝像頭、麥克風(fēng),都是數(shù)據(jù)采集工具。

數(shù)據(jù)采集系統(tǒng)包括:信號、傳感器、激勵器、信號調(diào)理設(shè)備、數(shù)據(jù)采集設(shè)備和應(yīng)

用軟件。

大數(shù)據(jù)在互聯(lián)網(wǎng)中類型也是多種多樣的,其中包含了結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)、

非結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)最常見,就是具有模式的數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)結(jié)構(gòu)

不規(guī)則或不完整,沒有預(yù)定義的數(shù)據(jù)模型,包括所有格式的辦公文檔、文本、圖片、

XML文件、HTML文件、各類報表、圖像和音頻/視頻信息等。大數(shù)據(jù)采集,是大數(shù)

據(jù)分析的入口,所以是相當(dāng)重要的一個環(huán)節(jié)。

數(shù)據(jù)采集現(xiàn)在己經(jīng)被廣泛應(yīng)用于互聯(lián)網(wǎng)及分布式領(lǐng)域,數(shù)據(jù)采集領(lǐng)域已經(jīng)發(fā)生了

重要的變化。國內(nèi)外數(shù)據(jù)采集設(shè)備先后問世,將數(shù)據(jù)采集帶入了一個全新的時代,也

為我們在互聯(lián)網(wǎng)中的發(fā)展注入了更多的能量。

2.1互聯(lián)網(wǎng)大數(shù)據(jù)采集與處理技術(shù)概述

互聯(lián)網(wǎng)網(wǎng)頁數(shù)據(jù)是大數(shù)據(jù)領(lǐng)域的一個重要組成部分,它具有分布廣、格式多樣、

非結(jié)構(gòu)化等大數(shù)據(jù)的典型特點,我們需要有針對性地對互聯(lián)網(wǎng)網(wǎng)頁數(shù)據(jù)進行采集、轉(zhuǎn)

換、加工和存儲,尤其在網(wǎng)頁數(shù)據(jù)的采集和處理方面,存在急需突破的較多關(guān)鍵技術(shù)。

互聯(lián)網(wǎng)網(wǎng)頁大數(shù)據(jù)采集就是獲取互聯(lián)網(wǎng)中相關(guān)網(wǎng)頁內(nèi)容的過程,并從中抽取出用

戶所需要的屬性內(nèi)容?;ヂ?lián)網(wǎng)網(wǎng)頁大數(shù)據(jù)處理,就是對抽取出來的網(wǎng)頁數(shù)據(jù)進行內(nèi)容

和格式上的處理,進行轉(zhuǎn)換和加工,使之能夠適應(yīng)用戶的需求,然后存儲以備后用。

2.1.1數(shù)據(jù)采集的基本流程與關(guān)鍵技術(shù)

1.數(shù)據(jù)采集的整體框架

Web爬蟲是一種互聯(lián)網(wǎng)網(wǎng)頁數(shù)據(jù)的采集工具。Web爬蟲的整個抓取過程主要包括

以下6個部分。

(1)網(wǎng)站頁面(SitePage):用來獲取網(wǎng)站的網(wǎng)頁內(nèi)容。

(2)內(nèi)容抽取(ContentExtractor):用來從網(wǎng)頁內(nèi)容中抽取所需屬性的內(nèi)容值。

(3)鏈接抽取(URLExtractor):用來從網(wǎng)頁內(nèi)容中抽取出該網(wǎng)站正文內(nèi)容的鏈接

地址。

(4)鏈接過濾(URLFilter):用來判斷該鏈接地址的網(wǎng)頁內(nèi)容是否已經(jīng)被抓取過。

(5)URL隊列(URLQueue):用來為Web爬蟲提供需要抓取數(shù)據(jù)網(wǎng)站的URL。

(6)數(shù)據(jù)(Data):它包含SiteURL(需要抓取數(shù)據(jù)網(wǎng)站的URL信息)、SpiderURL(B

經(jīng)抓取過數(shù)據(jù)的網(wǎng)頁URL),SpiderContent(經(jīng)過抽取的網(wǎng)頁內(nèi)容)三個部分。

2.數(shù)據(jù)采集的基本流程

整個數(shù)據(jù)采集過程包括以下9個步驟。

zX

41I

\/將需要抓取數(shù)據(jù)的網(wǎng)站的URL信息(SiteURL)寫入URL隊列。

z2\

(?

x7Web爬蟲從URL隊列中獲取需要抓取數(shù)據(jù)的網(wǎng)站的SiteURL信息、。

z\

(3)

x/獲取某個具體網(wǎng)站的網(wǎng)頁內(nèi)容。

4

從網(wǎng)頁內(nèi)容中抽取出該網(wǎng)站正文頁內(nèi)容的鏈接地址。

z

(5

x從數(shù)據(jù)庫中讀取已經(jīng)抓取過內(nèi)容的網(wǎng)頁地址(SpiderURL)。

6

過濾URL,將當(dāng)前的URL和已經(jīng)抓取過的URL進行比較。

z

(7

x如果該網(wǎng)頁地址沒有被抓取過,則將該地址寫入SpiderURL數(shù)據(jù)庫;如果該

地址己經(jīng)被抓取過,則放棄對這個地址的抓取操作。

(8)獲取該地址的網(wǎng)頁內(nèi)容,并抽取出所需屬性的內(nèi)容值。

(9)將抽取的網(wǎng)頁內(nèi)容寫入數(shù)據(jù)庫。

3.數(shù)據(jù)采集的關(guān)鍵技術(shù)——鏈接過濾

鏈接過濾的實質(zhì)就是判斷一個鏈接(當(dāng)前鏈接)是不是在一個鏈接集合(已經(jīng)抓取過

的鏈接)里面。在對網(wǎng)頁大數(shù)據(jù)的采集中,可以采用布隆過濾器(BloomFilter)來實現(xiàn)對

鏈接的過濾。

布隆過濾器的基本思想是:當(dāng)一個元素被加入集合時,通過k個散列函數(shù)將這個

元素映射成一個位數(shù)組中的/個點,將它們置為k檢索時,我們只需看看這些點是否

都是1大概就知道集合中有沒有它了:如果這些點有任何一個0,則被檢元素一定不在;

如果都是1,則被檢元素很可能在。

布隆過濾器在空間和時間方面的優(yōu)勢體現(xiàn)在以下三方面。

(1)復(fù)雜度方面:布隆過濾器的存儲空間和插入/查詢時間都是常數(shù)(即復(fù)雜度為

0(6)。

(2)關(guān)系方面:散列函數(shù)相互之間沒有關(guān)聯(lián)關(guān)系,方便由硬件并行實現(xiàn)。

(3)存儲方面:布隆過濾器不需要存儲元素本身,在某些對保密要求非常嚴(yán)格的

場合有優(yōu)勢。

布隆過濾器的具體實現(xiàn)方法是:已經(jīng)抓取過的每個URL,經(jīng)過k個Hash函數(shù)(也

稱散列函數(shù))的計算,得出k個值,再和一個巨大的二進制位(bit)數(shù)組的這k個位置的

元素對應(yīng)起來(這些位置數(shù)組元素的值被設(shè)置為1)。在需要判斷某個URL是否被抓取

過時,先用%個Hash函數(shù)對該URL計算出我個值,然后查詢巨大的bit數(shù)組內(nèi)這八個

位置上的值,如果均為1,則是已經(jīng)被抓取過,否則沒被抓取過。

2.1.2數(shù)據(jù)處理的基本流程與關(guān)鍵技術(shù)

1.數(shù)據(jù)處理的整體框架

數(shù)據(jù)處理的整個過程主要包括以下4個部分。

(1)分詞(WordsAnalyze):用來對抓取到的網(wǎng)頁內(nèi)容進行切詞處理。

(2)排重(ContentDeduplicate):用來對眾多的網(wǎng)頁內(nèi)容進行排重。

(3)整合(Integrate):用來對不同來源的數(shù)據(jù)內(nèi)容進行格式上的整合。

(4)數(shù)據(jù):包含SpiderData(Web爬蟲從網(wǎng)頁中抽取出來的數(shù)據(jù))和DPData(在整

個數(shù)據(jù)處理過程中產(chǎn)生的數(shù)據(jù))兩部分?jǐn)?shù)據(jù)。

2.數(shù)據(jù)處理的基本流程

一個完整的數(shù)據(jù)處理過程包括以下6個步驟。

(1)對抓取來的網(wǎng)頁內(nèi)容進行分詞。

(2)將分詞處理的結(jié)果寫入數(shù)據(jù)庫。

(3)對抓取來的網(wǎng)頁內(nèi)容進行排重。

(4)將排重處理后的數(shù)據(jù)寫入數(shù)據(jù)庫。

(5)根據(jù)之前的處理結(jié)果,對數(shù)據(jù)進行整合。

(6)將整合后的結(jié)果寫入數(shù)據(jù)庫。

3.數(shù)據(jù)處理的關(guān)鍵技術(shù)——排重

排重就是排除掉與主題相重復(fù)項的過程,網(wǎng)頁排重就是通過兩個網(wǎng)頁之間的相似

度來排除重復(fù)項。SimHash算法是一種高效的海量文本排重算法,相比于余弦角、歐

式距離、Jaccard相似系數(shù)等算法,SimHash算法避免了對文本兩兩進行相似度比較的

復(fù)雜方式,從而大大提高了效率。

采用SimHash算法來進行抓取網(wǎng)頁內(nèi)容的排重,可以容納更大的數(shù)據(jù)量,提供更

快的數(shù)據(jù)處理速度,實現(xiàn)大數(shù)據(jù)的快速處理。SimHash算法的基本思想描述如下。

輸入:一個N維向量匕例如文本的特征向量,每個特征具有一定權(quán)重。

輸出:一個C位的二進制簽名S。

(1)初始化一個C維向量。為0,C位的二進制簽名S為0。

(2)對向量V中的每一個特征,使用傳統(tǒng)的Hash算法計算出一個C位的散列值從

對1W1WC,如果〃的第i位為1,則。的第i個元素加上該特征的權(quán)重;否則,。的

第i個元素減去該特征的權(quán)重。

(3)如果。的第i個元素大于0,則S的第i位為1;否則為0。

(4)返回簽名S。

在對每篇文檔根據(jù)SimHash算法算出簽名后,再計算兩個簽名的漢明距離(兩個二

進制異或后1的個數(shù))即可。根據(jù)經(jīng)驗值,對64位的SimHash算法,漢明距離在3以

內(nèi)的可以認(rèn)為相似度比較高。

4.數(shù)據(jù)處理的關(guān)鍵技術(shù)——整合

整合是把抓取來的網(wǎng)頁內(nèi)容與各個公司之間建立對應(yīng)關(guān)系。對每個公司來說,可

以用一組關(guān)鍵詞來對該公司進行描述,同樣的,經(jīng)過DP處理之后的網(wǎng)頁內(nèi)容,也可

以用一組關(guān)鍵詞來進行描述。因此,整合就變成了公司關(guān)鍵詞和內(nèi)容關(guān)鍵詞之間的

匹配。

對于網(wǎng)頁內(nèi)容的分詞結(jié)果來說,存在以下兩個特點。

(1)分詞結(jié)果的數(shù)量很大。

(2)大多數(shù)的分詞對描述該網(wǎng)頁內(nèi)容來說是沒有貢獻的。因此,對網(wǎng)頁的分詞結(jié)

果進行簡化,使用詞頻最高的若干個詞匯來描述該網(wǎng)頁內(nèi)容。經(jīng)簡化后,兩組關(guān)鍵詞

的匹配效率就得到了很大的提升,同時準(zhǔn)確度也得到了保障;經(jīng)過整合之后,抓取來

的網(wǎng)頁內(nèi)容與公司之間就建立了一個對應(yīng)關(guān)系,就能知道某個具體的公司有著怎樣的

數(shù)據(jù)了。

2.2Web頁面數(shù)據(jù)獲取實戰(zhàn)方法

2.2.1Jsoup技術(shù)與頁面數(shù)據(jù)獲取

Jso叩是一款比較好的Java版HTML解析器,它可以直接解析某個URL地址、

HTML文本內(nèi)容,并有一套好用的API,可通過DOM、CSS以及類似于jQuery的操

作方法來取出和操作數(shù)據(jù)。

1.Jsoup的功能

Jsoup的功能如下。

(1)從一個URL、文件或字符串中解析HTML。

(2)使用DOM或CSS選擇器來查找、取出數(shù)據(jù)。

(3)可操作HTML元素、屬性、文本。

2.Jsoup的使用方法

Jsoup可從字符串、URL地址以及本地文件來加載HTML文檔,并生成Document

對象實例。

(1)Document對象(一個文檔的對象模型):文檔由多個元素和文本節(jié)點組成(以及

其他輔助節(jié)點)。

(2)一個元素包含一個子節(jié)點集合,并擁有一個父元素。它們還提供了一個唯一

的子元素過濾列表。

1)從字符串中輸入HTML文檔

(1)解析一個HTML字符串。

使用靜態(tài)方法(Stringhtml)或(Stringhtml,StringbaseUri),代碼如下:

Stringhtml=H<html><heaci><title>Firstparse</titlex/head>u

+H<body><p>ParsedHTMLintoadoc.</px/body></html>n;

Documentdoc=(html);

說明:

parse(Stringhtml,StringbaseUri)這個方法能夠?qū)⑤斎氲腍TML解析為一個新的文

檔(Document),參數(shù)baseUri是用來將相對URL轉(zhuǎn)成絕對URL,并指定從哪個網(wǎng)站

獲取文檔。如這個方法不適用,你可以使用parse(Stringhtml)方法來解析成HTML字

符串(如上面的示例)。只要解析的不是空字符串,就能返回一個結(jié)構(gòu)合理的文檔,其中

包含(至少)一個head和一個body元素。如果擁有了一個Document,你就可以使用

Document中適當(dāng)?shù)姆椒ɑ蚱涓割怑lement(元素)和Node(節(jié)點)中的方法來取得相關(guān)

數(shù)據(jù)。

(2)解析一個body片段。

假設(shè)相對一個HTML片段(如一個div包含一對p標(biāo)簽,一個不完整的HTML文

檔)進行解析。這個HTML片段可以是用戶提交的一條評論或在一個CMS頁面中編輯

body部分??梢允褂肂odyFragment(Stringhtml)方法,代碼如下:

Stringhtml=H<div><p>Loremipsum.</p>";

Documentdoc=BodyFragment(html);

Elementbody=();

說明:

①parseBodyFragment方法創(chuàng)建一個空殼的文檔,并插入解析過的HTML到

body元素中。假如你使用正常的(Stringhtml)方法,通常你也可以得到相同的結(jié)果,但

是明確將用戶輸入作為body片段處理,以確保用戶所提供的任何糟糕的HTML都將

被解析成body元素。

②()方法能夠取得文檔body元素的所有子元素,與ementsByTag(“body”)相

同。

(3)從一個URL加載一個Document。

從一個網(wǎng)站獲取和解析一個HTML文檔,并查找其中的相關(guān)數(shù)據(jù),可以使用

ct(Stringurl)方法,代碼如下:

Documentdoc=ct("Mhk/n).get();

Stringtitle=();

說明:

①connect(Stringurl)方法創(chuàng)建一個新的Connection(連接)和get()方法取得和解析

一個HTML文件。如果從該URL獲取HTML時發(fā)生錯誤,便會拋出lOException異

常,應(yīng)適當(dāng)處理。

②Connection接口還提供一個方法鏈來解決特殊請求,方法如下:

Documentdoc=ct("")

.data("query","Java")

.userAgent("Mozilla”)

.cookie("auth"z"token")

.timeout(3000)

.post();

這個方法只支持WebURLs(HTTP和HTTPS協(xié)議),假如你需要從一個文件加載,

可以使用parse(Filein,StringcharsetName)代替。

(4)從文件中加載HTML文檔。

假如在本機硬盤上有一個HTML文件,需要對它進行解析從中抽取數(shù)據(jù)或進行修

改,可以使用靜態(tài)方法(Filein,StringcharsetName,StringbaseUri),代碼如下:

Fileinput=newFile("/tmp/n);

Documentdoc=(input,"UTF-8n,

說明:

①parse(Filein,StringcharsetName,StringbaseUri)這個方法用來加載和解析一個

HTML文件。如果在加載文件的時候發(fā)生錯誤,將拋出lOException異常,應(yīng)作適當(dāng)

處理。

②baseUri參數(shù)用于解決文件中URLs是相對路徑的問題(如果不需要可以傳入一

個空的字符串)。

③還有一個方法parse(Filein,StringcharsetName),它使用文件的路徑作為

baseUrio這個方法適用于被解析文件位于網(wǎng)站的本地文件系統(tǒng),且相關(guān)鏈接也指向該

文件系統(tǒng)。

2)數(shù)據(jù)抽取

(1)使用DOM方法來遍歷一個文檔。

假設(shè)有一個HTML文檔要從中提取數(shù)據(jù),并了解此文檔的結(jié)構(gòu)。將HTML解析成

一個Document對象之后,就可以使用類似于DOM的方法進行操作,代碼如下:

Fileinput=newFile("/tmp/H);

Documentdoc=(input,"UTF-8","n);

Elementcontent=ementByld(Mcontentn);

Elementslinks=ementsByTag(;

for(Elementlink:links){

StringlinkHref=(nhref");

StringlinkText=();

}

說明:Elements(元素)對象提供了一系列類似于DOM的方法來查找元素,抽取并

處理其中的數(shù)據(jù),這里不做列舉。

(2)使用選擇器語法查找元素。

如果想使用類似于CSS或jQuery的語法來查找和操作元素,可以使用t(String

selector)和t(Stringselector)方法,代碼如下:

Fileinput=newFile(H/tmp/");

Documentdoc=(input,"UTF-8”,H;

Elementslinks=t("a[href]”);//帶有href屬性的a元素

Elementspngs=t("img[src$=.png]");

//擴展名為.png的圖片

Elementmasthead=t("ead*1).first();

//class等于masthead的div標(biāo)簽

ElementsresultLinks=t(nh3.r>a");//在h3元素之后的a元素

說明:

①JsoupElements對象支持類似于CSS(或jQuery)的選擇器語法,來實現(xiàn)非常強

大和靈活的查找功能。

②這個select方法在Document、Element或Elements對象中都可以使用,且是

上下文相關(guān)的,因此可實現(xiàn)指定元素的過濾,或者鏈?zhǔn)竭x擇訪問。

③select方法將返回一個Elements集合,并提供一組方法來抽取和處理結(jié)果。

(3)從元素抽取屬性、文本和HTML。

在解析獲得一個Document實例對象,并查找到一些元素后,需要取得在這些元素

中的數(shù)據(jù),可以使用的方法有:①要取得一個屬性的值,可以使用(Stringkey)方法;

②對于一個元素中的文本,可以使用()方法;③對于要取得元素或?qū)傩灾械腍TML內(nèi)

容,可以使用()或Html()方法。

代碼如下:

Stringhtml=**<p>An<ahref=*'><b>example</b></a>link.</p>n;

Documentdoc=(h七ml);〃解析HTML字符串返回一個Document對象實例

Elementlink=t("a").first();//查找第一個a元素

Stringtext=().text();//"Anexamplelink"〃取得字符串中的文本

StringlinkHref=(“href");//"H

//取得鏈接地址

StringlinkText=();//"example””//取得鏈接地址中的文本

StringlinkOuterH=Html();

//"<ahref=n"><b>example</b></a>"

StringlinklnnerH=();//“<b〉example〈/b〉”//取得鏈接內(nèi)的html內(nèi)容

說明:

上述方法是元素數(shù)據(jù)訪問的核心辦法。此外也有其他一些方法可以使用,如:()、

me()、Name。和ass(StringclassName)。這些訪問器方法都有相應(yīng)的setter方法來更改數(shù)

據(jù)。

(4)URLs處理。

如果有一個包含相對URLs路徑的HTML文檔,要將這些相對路徑轉(zhuǎn)換成絕對路

徑的URLs,可采用以下方法:在解析文檔時確保有指定的baseURI,然后使用abs:

屬性前綴來取得包含baseURI的絕對路徑。代碼如下:

Documentdoc=ct(H").get();

Elementlink=t("a").first();

StringrelHref=("href");//=="/"

StringabsHref=(Habs:href");//""

說明:

在HTML元素中,URLs經(jīng)常寫成相對于文檔位置的相對路徑:<a

href="/download">...</a>0當(dāng)你使用(Stringkey)方法來取得a元素的href屬性時,它將

直接返回在HTML源碼中指定的值。

如果你需要取得一個絕對路徑,需要在屬性名前加abs:。這樣就可以返回包含根

路徑的URL地址attr("abs:hre『)。因此,在解析HTML文檔時,定義baseURI非常重

要。如果你不想使用前綴abs:,還可使用l(Stringkey)方法實現(xiàn)同樣的功能。

3)數(shù)據(jù)修改

(1)設(shè)置屬性值。

如果在解析一個Document之后想修改其中的某些屬性值,然后再保存到磁盤或都

輸出到前臺頁面,設(shè)置屬性可采用的方法有(Stringkey,Stringvalue)和(Stringkey,

Stringvalue);修改一個元素的class屬性,可以使用ass(StringclassName)和eClass(String

className)方法。

Elements提供了批量操作元素屬性和class的方法,例如要為div中的每一個a元

素都添加一個rel="nofollow”,可以使用如下方法:

t(Hntsan).attr(nreln,"nofollow**);

說明:

與Element中的其他方法一樣,attr()方法也是返回Element(或在使用選擇器時返回

Elements集合)。這樣能夠很方便地使用方法連用的書寫方式。如以下代碼:

t("ead").attr("title","jsoup").addClass("round-box");

(2)設(shè)置元素的HTML內(nèi)容。

如果想獲取一個元素中的HTML內(nèi)容,可以使用Element對象中的HTML設(shè)置方

法,具體方法如下:

Elementdiv=t("divn).first();//<div></div>

(n<p>loremipsum</p>n);//<div><p>loremipsum</px/div>

nd("<p>First</p>n);//在div前添力口html內(nèi)容

d("<p>Last</p>");//在div后添力口html內(nèi)容

//添完后的結(jié)果:<div><p>First</pxp>loremipsum</pxp>Last</px/div>

Elementspan=t("span").first();//<span>One</span>

(n<lixahref=,'x/ax/li〉”);

//添完后的結(jié)果:<li><ahref="H><span>One</span></a></li>

說明:

①(Stringhtml)這個方法將先清除元素中的HTML內(nèi)容,然后用傳入的HTML

代替。

②nd(StringErst)和d(Stringlast)方法用于分別在元素內(nèi)部HTML的前面和后面

添加HTML內(nèi)容。

③(Stringaround)方法用來對元素包裝一個外部HTML內(nèi)容。

(3)設(shè)置元素的文本內(nèi)容。

如果要修改一個HTML文檔中的文本內(nèi)容,方法如下:

Elementdiv=t(ndivn).first();//<div></div>

("five>four");//<div>five>four</div>

nd("Firstn);

d("Last");

//now:<div>Firstfive>fourLast</div>

說明:

文本設(shè)置方法與HTMLsetter方法相同:①(Stringtext)將清除一個元素中的內(nèi)部

HTML內(nèi)容,然后用提供的文本進行代替:②nd(Stringfirst)和d(Stringlast)將分別在元

素的內(nèi)部html前后添加文本節(jié)點。

如果傳入的文本含有像<,>等這樣的字符,將作為文本處理,而不是HTMLo

2.2.2應(yīng)對特定領(lǐng)域的DeepWeb數(shù)據(jù)獲取技術(shù)

1.DeepWeb概述

DeepWeb(深網(wǎng)),即深層網(wǎng)絡(luò),也叫不可見網(wǎng)、隱藏網(wǎng),是指萬維網(wǎng)上那些不能

被標(biāo)準(zhǔn)搜索引擎索引的非表面網(wǎng)絡(luò)內(nèi)容。我們平常使用搜索引擎上網(wǎng)接觸到的即為表

層網(wǎng)絡(luò)(SurfaceWeb)。

與SurfaceWeb相比,DeepWeb隱藏著更豐富及“專業(yè)"的信息。根據(jù)之前對Deep

Web做得較為全面的宏觀統(tǒng)計,提出對DeepWeb的定義主要指的是Web數(shù)據(jù)庫,指

出整個Web上大約有十萬個的Web數(shù)據(jù)庫,并從宏觀上對DeepWeb做了定量的調(diào)查

統(tǒng)計,其中部分的結(jié)果如下:

(1)DeepWeb蘊含的信息量是SurfaceWeb的400~500倍。

(2)對DeepWeb數(shù)據(jù)的訪問量比SurfaceWeb要高出15%。

(3)DeepWeb蘊含的信息量比SurfaceWeb的質(zhì)量更高。

(4)DeepWeb的增長速度要遠(yuǎn)大于SurfaceWeb。

(5)超過50%的DeepWeb的內(nèi)容是特定于某個域的,即面向某個領(lǐng)域。

(6)整個DeepWeb覆蓋了現(xiàn)實世界中的各個領(lǐng)域,如商業(yè)、教育、政府等。

(7)DeepWeb上95%的信息是可以公開訪問的,即免費獲取。

2.DeepWeb不可直接索引的原因

DeepWeb的內(nèi)容形式包括:動態(tài)內(nèi)容、未被鏈接的內(nèi)容、私人網(wǎng)站、Contextual

Web(語境網(wǎng)絡(luò))、被限制的訪問內(nèi)容、腳本內(nèi)容、非HTML/文本內(nèi)容等?;贒eepWeb

的上述內(nèi)容形式,DeepWeb不可索引的原因包括以下方面。

(1)某些DeepWeb的內(nèi)容由于未與外網(wǎng)連接,網(wǎng)絡(luò)爬蟲無法通過URL獲取到這

些內(nèi)容。

(2)DeepWeb的內(nèi)容屬于非表面網(wǎng)絡(luò)上的內(nèi)容,用戶想獲取內(nèi)容一般需填寫表單

發(fā)送請求后生成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論