夏飛,丁勝,孟振南,湯葉舟,謝景文
(武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430065)
基于云計(jì)算平臺(tái)的HTML解析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
夏飛,丁勝,孟振南,湯葉舟,謝景文
(武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430065)
HTML解析技術(shù)能夠?qū)崿F(xiàn)非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)化的數(shù)據(jù),傳統(tǒng)的HTML解析技術(shù)大多被直接使用到App中,其性能往往會(huì)受到運(yùn)行環(huán)境限制,而且缺乏靈活性,難以維護(hù)。針對(duì)這些不足之處,設(shè)計(jì)一種基于云計(jì)算的HTML解析系統(tǒng),將HTML解析放在云上。利用云平臺(tái)的超強(qiáng)計(jì)算性能,將非結(jié)構(gòu)化的HTML數(shù)據(jù)結(jié)構(gòu)化,提高移動(dòng)智能終端的數(shù)據(jù)處理效率。
HTML解析;云計(jì)算;jsoup
如今,互聯(lián)網(wǎng)上的信息越來(lái)越多,互聯(lián)網(wǎng)的信息已經(jīng)成為一個(gè)越來(lái)越大的礦山,這個(gè)里面有黃金也有垃圾,我們坐在這個(gè)礦山上,如何挖掘其中的金子,已經(jīng)越來(lái)越受到重視,而這個(gè)挖掘過(guò)程的第一步就是需要將這些非結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)化的數(shù)據(jù)。最簡(jiǎn)單的搜索爬蟲需要這種轉(zhuǎn)變,由Web到WAP的轉(zhuǎn)碼需要這種轉(zhuǎn)變,Web數(shù)據(jù)的應(yīng)用也需要這種轉(zhuǎn)變。而HTML解析技術(shù)便可輕松實(shí)現(xiàn)這種轉(zhuǎn)變。
實(shí)際中很多應(yīng)用正是基于HTML解析技術(shù)實(shí)現(xiàn)的,而且越來(lái)越多的移動(dòng)智能終端應(yīng)用也在采用這種方式。但移動(dòng)智能終端的計(jì)算性能有限,因而問題便出現(xiàn)了,即便HTML解析算法效率很高,但直接將這種技術(shù)運(yùn)用到App上,App的性能也將會(huì)受到運(yùn)行環(huán)境的限制,進(jìn)而不能發(fā)揮其最大能力。
與此同時(shí),隨著科技的飛速發(fā)展,云計(jì)算技術(shù)得以推廣普及,云計(jì)算平臺(tái)允許我們將大量的數(shù)據(jù)處理邏輯放在云端,借助云平臺(tái)計(jì)算性能和數(shù)據(jù)處理能力,對(duì)大量非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。
針對(duì)這些特點(diǎn),我們可以利用云計(jì)算平臺(tái)優(yōu)秀的性能,輕松完成大量非結(jié)構(gòu)化的HTML數(shù)據(jù)的解析,緊接著將其中有價(jià)值的數(shù)據(jù)提取出來(lái)重新打包封裝,然后回傳給發(fā)起請(qǐng)求的移動(dòng)智能終端。此時(shí)移動(dòng)智能終端App接收到的是結(jié)構(gòu)化的數(shù)據(jù),處理時(shí)可以大大降低終端的壓力,獲得更快的響應(yīng),進(jìn)而也就能給用戶帶來(lái)更好的操作體驗(yàn)。
云計(jì)算平臺(tái)也稱為云平臺(tái)。云計(jì)算平臺(tái)可以劃分為3類:以數(shù)據(jù)存儲(chǔ)為主的存儲(chǔ)型云平臺(tái),以數(shù)據(jù)處理為主的計(jì)算型云平臺(tái)以及計(jì)算和數(shù)據(jù)存儲(chǔ)處理兼顧的綜合云計(jì)算平臺(tái)。這里用到的是第二種,即以數(shù)據(jù)處理為主的計(jì)算型云平臺(tái)。而可以部署在云平臺(tái)上服務(wù)器又分為多種,這里為了更好地發(fā)揮HTML解析工具的性能,我們采用了Tomcat+Servlet技術(shù)。下面將對(duì)Tomcat、Servlet進(jìn)行簡(jiǎn)單的介紹。
Tomcat是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,具有開源免費(fèi)、容易安裝使用、占用資源小、易于和其他軟件集成等優(yōu)點(diǎn),其因技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器。這里我們將其用作Servlet的容器,負(fù)責(zé)管理Servlet,同時(shí)充當(dāng)請(qǐng)求調(diào)度器,將客戶端的請(qǐng)求傳遞到Servlet,同時(shí)將Servlet的響應(yīng)返回給客戶端。
圖1 Tomcat容器模型
Servlet是一種獨(dú)立于操作系統(tǒng)平臺(tái)和網(wǎng)絡(luò)傳輸協(xié)議的服務(wù)端的Java應(yīng)用程序,它通過(guò)動(dòng)態(tài)響應(yīng)客戶端請(qǐng)求來(lái)擴(kuò)展服務(wù)器的功能。它可以處理HTTP請(qǐng)求,并回送一個(gè)響應(yīng);它還可以方便并且靈活地使用第三方的開源工具jar包,同時(shí)Servlet還有優(yōu)秀的互聯(lián)網(wǎng)訪問性能。Servlet有著十分廣泛的應(yīng)用,不僅能簡(jiǎn)單地處理客戶端的請(qǐng)求,借助Java強(qiáng)大的功能還可以實(shí)現(xiàn)并發(fā)處理多個(gè)請(qǐng)求的功能。在啟用了Servlet的Web服務(wù)器中,默認(rèn)情況下,Servlet采用一種無(wú)狀態(tài)的請(qǐng)求-響應(yīng)處理方式。Servlet被加載、初始化、準(zhǔn)備響應(yīng)客戶請(qǐng)求的過(guò)程如圖2所示。
圖2 Servlet實(shí)例化、初始化及處理請(qǐng)求
基于這些特點(diǎn),我們可以利用Servlet來(lái)編寫運(yùn)行于云計(jì)算平臺(tái)上的Tomcat中的用戶處理用戶請(qǐng)求,抓取并解析HTML數(shù)據(jù),然后回傳數(shù)據(jù)的業(yè)務(wù)處理邏輯。
2.1 服務(wù)器端設(shè)計(jì)與實(shí)現(xiàn)
服務(wù)器端是本系統(tǒng)的核心部分,其主要用來(lái)接收客戶端的請(qǐng)求,并根據(jù)請(qǐng)求內(nèi)容到互聯(lián)網(wǎng)上抓取相關(guān)HTML數(shù)據(jù),然后將數(shù)據(jù)解析打包并回傳給客戶端。其主要完成:①接收并識(shí)別客戶端發(fā)送過(guò)來(lái)的請(qǐng)求;②根據(jù)請(qǐng)求內(nèi)容,自動(dòng)從互聯(lián)網(wǎng)這座數(shù)據(jù)大礦山中匹配出相關(guān)HTML數(shù)據(jù);③將這些相關(guān)的HTML數(shù)據(jù)抓取到云計(jì)算平臺(tái)上;④對(duì)抓取回來(lái)的HTML數(shù)據(jù)進(jìn)行解析;⑤將解析出的有價(jià)值的信息重新封裝打包;⑥將數(shù)據(jù)回傳給發(fā)起請(qǐng)求的客戶端。
服務(wù)器端的處理流程如圖3所示。
圖3 服務(wù)器端處理流程
其中,對(duì)HTML數(shù)據(jù)進(jìn)行解析時(shí),用到了開源的第三方工具jar包——jsoup。在眾多HTML解析工具中,jsoup有其獨(dú)特的類似于jQuery的select選擇器,因而其對(duì)HTML的解析效率非常高,而且使用很方便、靈活。
例如,對(duì)下面的字符串進(jìn)行解析,并提取title標(biāo)簽下的文本節(jié)點(diǎn)(First parse):
2.2 客戶端設(shè)計(jì)與實(shí)現(xiàn)
客戶端部分主要用于與用戶進(jìn)行交互,接收用戶的輸入并顯示服務(wù)器端返回的數(shù)據(jù)。其主要完成:①接收用戶輸入請(qǐng)求;②將請(qǐng)求以HTTP post/get方式傳遞給云計(jì)算平臺(tái)上Tomcat中的Servlet程序;③接收云計(jì)算平臺(tái)回傳的數(shù)據(jù);④將接收到的數(shù)據(jù)拆包,以用戶可閱讀的形式呈現(xiàn)給用戶。客戶端程序大致流程圖如圖4所示。
圖4 客戶端處理流程
其中,客戶端不依賴于特定的平臺(tái),可以是PC上的應(yīng)用軟件,也可以是移動(dòng)智能終端上的軟件,并且其用于與用戶進(jìn)行交互的界面也是靈活多變的。
2.3 數(shù)據(jù)交換的格式
本系統(tǒng)服務(wù)器端和客戶端之間的數(shù)據(jù)交換格式采用JSON格式,JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,它采用完全獨(dú)立于語(yǔ)言的文本格式,也使用了類似于C語(yǔ)言家族的習(xí)慣。因此其易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。本系統(tǒng)為了減輕移動(dòng)終端的數(shù)據(jù)處理壓力,同時(shí)節(jié)省數(shù)據(jù)流量,而采用了這種數(shù)據(jù)格式。
例如:"firstName":"John",表示鍵為“firstName”的字段的值是“John”。
互聯(lián)網(wǎng)的迅速發(fā)展,帶來(lái)一個(gè)嶄新的時(shí)代。如今互聯(lián)網(wǎng)上的信息越來(lái)越多,如何去利用好這座礦山的資源,將其中的有價(jià)值的數(shù)據(jù)挖掘出來(lái),將沒有價(jià)值的垃圾數(shù)據(jù)過(guò)濾掉,并實(shí)現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)到結(jié)構(gòu)化數(shù)據(jù)的轉(zhuǎn)變,已受到越來(lái)越多的人的關(guān)注。傳統(tǒng)的HTML數(shù)據(jù)處理的方式不夠靈活,且難以維護(hù),因此亟需一種新的處理方法,以此實(shí)現(xiàn)資源的最大化利用。本文設(shè)計(jì)的HTML處理系統(tǒng),將數(shù)據(jù)的處理與數(shù)據(jù)的呈現(xiàn)分離開來(lái),將數(shù)據(jù)處理放到云計(jì)算平臺(tái)上,開發(fā)人員只需要維護(hù)云計(jì)算平臺(tái)上的代碼即可,因此大大提高了系統(tǒng)的可維護(hù)性,同時(shí)本系統(tǒng)使用優(yōu)秀的jsoup工具來(lái)處理HTML數(shù)據(jù),其靈活性得以大大提升。經(jīng)實(shí)驗(yàn)運(yùn)行驗(yàn)證,本系統(tǒng)能正常地工作,但還可繼續(xù)完善,例如實(shí)現(xiàn)語(yǔ)義分析、數(shù)據(jù)挖掘、智能信息處理等功能。
[1] (美)Reto Meier.Android 4高級(jí)編程(第3版),2013:83~139
[2] Jsoup Cookbook(中文版).http://www.open-open.com/jsoup/
[3] 郝玉龍.Java EE編程技術(shù),2011:18~74
[4] JSON中國(guó).http://www.json.org.cn/
Design and Implementation of HTML Parsing System Based on Cloud Computing Platform
XIA Fei,DING Sheng,MENG Zhen-nan,TANG Ye-zhou,XIE Jing-wen
(Wuhan University of Science and Technology,Wuhan 430065)
HTML parsing technique can change the unstructured data into structured data.The traditional HTML parsing technology tends to be used directly to the App,its performance is often constrained by running environment,and lacks of flexibility,so it is difficult to maintain. Aiming at these deficiencies,designs a kind of HTML parsing system based on cloud computing,puts the HTML parsing on the cloud. Using cloud platform super computing performance,makes the unstructured HTML into structured data again,this will greatly improve the efficiency of data processing of mobile intelligent terminal.
HTML Parsing;Cloud Computing;jsoup
1007-1423(2014)01-0042-04
10.3969/j.issn.1007-1423.2014.01.010
夏飛(1992-),男,湖北荊州人,在讀本科,研究方向?yàn)橐苿?dòng)智能終端應(yīng)用開發(fā)
丁勝(1975-),男,湖北武漢人,博士,副教授,研究生導(dǎo)師,研究方向?yàn)閳D像分析
孟振南(1994-),男,湖北鐘祥人,在讀本科,研究方向?yàn)橐苿?dòng)智能終端應(yīng)用開發(fā)
湯葉舟(1995-),男,江蘇常州人,在讀本科,研究方向?yàn)橐苿?dòng)智能終端應(yīng)用開發(fā)
謝景文(1995-),男,湖北天門人,在讀本科,研究方向?yàn)橐苿?dòng)智能終端應(yīng)用開發(fā)
2014-11-25
2014-12-04
武漢科技大學(xué)大學(xué)生科技創(chuàng)新基金研究項(xiàng)目(No.13ZRA067)