下一代互聯(lián)網(wǎng)技術(shù)-2015試卷李楚煌
深圳大學(xué)期末考試試卷開(kāi)/閉卷 命題人(簽字) 崔來(lái)中 審題人(簽字) 年 月 日 綜述報(bào)告下一代互聯(lián)網(wǎng)技術(shù)A/B卷 學(xué)分 2.5


深圳大學(xué)期末考試試卷
開(kāi)/閉卷 命題人(簽字) 崔來(lái)中 審題人(簽字) 年 月 日 綜述報(bào)告
下一代互聯(lián)網(wǎng)技術(shù)
A/B卷 學(xué)分 2.5
課程編號(hào) 1502320001 課程名稱(chēng)
課程綜述報(bào)告由個(gè)人獨(dú)立完成。 要求學(xué)生從教師的授課專(zhuān)題,包括:
(1) 下一代互聯(lián)網(wǎng)過(guò)渡技術(shù)(翻譯技術(shù)和隧道技術(shù)) (2) 云計(jì)算(資源調(diào)度、存儲(chǔ)、安全) (3) 社交網(wǎng)絡(luò)(推薦、影響力分析、傳播模型) (4) 物聯(lián)網(wǎng)(無(wú)線傳感器網(wǎng)絡(luò)、節(jié)能技術(shù)) (5) 搜索技術(shù)(爬蟲(chóng)技術(shù)、圖片搜索、語(yǔ)義搜索) (6) P 2P (文件下載、流媒體分發(fā))
(7) 大數(shù)據(jù)處理與分析技術(shù)(網(wǎng)絡(luò)與機(jī)器學(xué)習(xí))
(8) 多媒體網(wǎng)絡(luò)(多媒體網(wǎng)絡(luò)與SDN 、流媒體與機(jī)器學(xué)習(xí))
(9) 軟件定義網(wǎng)絡(luò)(SDN 與安全、SDN 與流量?jī)?yōu)化、SDN 與網(wǎng)絡(luò)管理) 選擇一個(gè)專(zhuān)題中的具體技術(shù)問(wèn)題(上述括號(hào)內(nèi)為推薦的問(wèn)題內(nèi)容)作為綜述報(bào)告主題,綜述報(bào)告名稱(chēng)自擬,參照附件一“綜述報(bào)告格式模板”與附件二“綜述報(bào)告寫(xiě)作指導(dǎo)完成綜述報(bào)告”;評(píng)分標(biāo)準(zhǔn)見(jiàn)附件三。 提交的課程綜述報(bào)告要符合深圳大學(xué)相關(guān)的格式規(guī)范。
第17周提交課程綜述報(bào)告電子版到blackboard 系統(tǒng),紙質(zhì)版交到任課老師處。
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 1 頁(yè) 共 15 頁(yè)
,附件一 綜述報(bào)告格式模板
深圳大學(xué)考試答題紙
(以論文、報(bào)告等形式考核專(zhuān)用)
二○一 學(xué)年度第
課程編號(hào) 1502320
001 課程名稱(chēng) 下一代互聯(lián)網(wǎng)技術(shù) 主講教師 崔來(lái)中 評(píng)分 20131503
學(xué) 號(hào) 83
姓名 李楚煌 專(zhuān)業(yè)年級(jí) 大三網(wǎng)絡(luò)工程01

題目:
網(wǎng)頁(yè)搜索中爬蟲(chóng)技術(shù)的若干研究
1. 前言
在21世紀(jì)互聯(lián)網(wǎng)高速發(fā)展的背景下,搜索引擎在人們生活中有著舉足輕重的作用,而網(wǎng)絡(luò)爬蟲(chóng)是搜索引擎中的重要的信息采集器,是搜索引擎技術(shù)的核心部分。
本文是對(duì)爬蟲(chóng)技術(shù)在現(xiàn)今網(wǎng)絡(luò)環(huán)境中出現(xiàn)不同的問(wèn)題、漏洞提出一些針對(duì)性的探究方法,并對(duì)各種方法進(jìn)行實(shí)驗(yàn)分析,主要研究分析工作如下:
網(wǎng)絡(luò)爬蟲(chóng)中的核心技術(shù)部分,即網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的多線程設(shè)計(jì)與實(shí)現(xiàn),詳細(xì)介紹網(wǎng)絡(luò)爬蟲(chóng)的概念及信息分類(lèi)涉及到的算法,技術(shù)要點(diǎn),并探討實(shí)現(xiàn)對(duì)漏洞平臺(tái)當(dāng)中的爬蟲(chóng)技術(shù)的聚焦。
網(wǎng)絡(luò)爬蟲(chóng)的核心在于,以端口接通為設(shè)計(jì)基礎(chǔ),依據(jù)HTTP 協(xié)議,使用SOCKET 套接字相關(guān)函數(shù)向服務(wù)器端發(fā)送HTTP 請(qǐng)求,得到目標(biāo)URL 對(duì)應(yīng)的網(wǎng)頁(yè)內(nèi)容,再?gòu)脑摼W(wǎng)頁(yè)提取出未爬取過(guò)的URL ,將該URL 重新作為源URL 進(jìn)行新的一輪向下爬取搜索工作,按照各種優(yōu)先算法向下爬行,從而完成網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的爬行工作。 在互聯(lián)網(wǎng)中有著很多協(xié)議,它們彼此聯(lián)系著,支持著許多網(wǎng)絡(luò)程序的運(yùn)行。網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)是基于SOCKET 協(xié)議的,而SOCKET 協(xié)議的基礎(chǔ)建立在TCP/IP協(xié)議之上。由此,網(wǎng)絡(luò)爬蟲(chóng)是基于最原始的協(xié)議,依靠算法技術(shù),組織分布式系統(tǒng),非常有潛力進(jìn)行強(qiáng)有力的數(shù)據(jù)探索與挖掘。既然網(wǎng)絡(luò)爬蟲(chóng)的優(yōu)勢(shì)潛能如此巨大,接下來(lái)我會(huì)詳細(xì)討論近期我對(duì)這個(gè)技術(shù)的若干研究。
2. 閱讀文獻(xiàn)概述
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 2 頁(yè) 共 15 頁(yè)
,基于此次希望探討的研究方向:網(wǎng)絡(luò)爬蟲(chóng),在中文文獻(xiàn)方面,主要有以下閱讀:多線程進(jìn)行網(wǎng)絡(luò)爬蟲(chóng)的過(guò)程優(yōu)化, 基于網(wǎng)絡(luò)爬蟲(chóng)的Web 信息采集技術(shù),爬蟲(chóng)對(duì)漏洞管理平臺(tái)核心幫助。在英文文獻(xiàn)方面主要有:《A Cloud-based Web Crawler Architecture 》 ,《A Spatial Web Crawler for Discovering 》, 《Design of improved focused web crawler》。這幾篇文獻(xiàn)探究的層次在于如何對(duì)信息進(jìn)行有效地采集、采集的量如何夠快夠大、以漏洞管理平臺(tái)為切口,看爬蟲(chóng)技術(shù)有哪方面的發(fā)展?jié)摿Α?/p>
多線程爬蟲(chóng)又可以理解為分布式爬蟲(chóng),主要閱讀的部分有分布式網(wǎng)絡(luò)爬蟲(chóng)結(jié)構(gòu)設(shè)計(jì),其中又細(xì)分為爬行節(jié)點(diǎn)的結(jié)構(gòu)設(shè)計(jì),控制節(jié)點(diǎn)的結(jié)構(gòu)設(shè)計(jì)。分布式網(wǎng)絡(luò)爬蟲(chóng)的關(guān)鍵技術(shù)在于,種子集合的優(yōu)化選取,分布函數(shù)的選擇。有這些分布式策略來(lái)帶領(lǐng)多線程下載。而對(duì)網(wǎng)絡(luò)信息的閱讀,在于有效采集,需要對(duì)信息檢索引擎有所劃分:全文檢索、目錄索引型檢索、元檢索。再深入到網(wǎng)絡(luò)爬蟲(chóng)的搜索策略,有深度優(yōu)先搜索策略、寬度優(yōu)先搜索策略、聚焦搜索策略。針對(duì)信息的實(shí)質(zhì)內(nèi)容,爬蟲(chóng)有其特色性質(zhì):布告欄的數(shù)據(jù)分類(lèi)及并聯(lián)式關(guān)聯(lián)、視頻的可預(yù)覽及真實(shí)尋址、論壇的自動(dòng)動(dòng)態(tài)更新實(shí)現(xiàn)。對(duì)漏洞平臺(tái)的爬蟲(chóng)聚焦技術(shù)的閱讀,首先了解的是在漏洞平臺(tái)這個(gè)領(lǐng)域,爬蟲(chóng)子模塊的劃分:爬蟲(chóng)接口模塊、配置文件解析模塊、網(wǎng)頁(yè)爬取模塊、網(wǎng)頁(yè)解析模塊、URL 過(guò)濾去重模塊、漏洞信息保存模塊。在漏洞平臺(tái)管理這個(gè)框架下,對(duì)爬蟲(chóng)效率如何改進(jìn)、URL 相關(guān)內(nèi)容如何改進(jìn)有所閱讀了解。
此外,《A Cloud-based Web Crawler Architecture》主要論述的網(wǎng)絡(luò)爬蟲(chóng)為代表的應(yīng)用程序,如何在網(wǎng)絡(luò)上更好得進(jìn)行有趣的信息的查找。因?yàn)榫W(wǎng)路上有巨量的索引的鏈接或非結(jié)構(gòu)化的數(shù)據(jù),這需要網(wǎng)絡(luò)爬蟲(chóng)去應(yīng)對(duì)這些挑戰(zhàn):鏈接和高密度計(jì)算的復(fù)雜性。在這種背景下,該文獻(xiàn)提供了云計(jì)算模式,支持彈性的資源化和非結(jié)構(gòu)化的數(shù)據(jù),并提供讀寫(xiě)加注功能。采用云計(jì)算的功能和MapReduce 編程技術(shù),可以使我們能夠分布式抓取網(wǎng)頁(yè)和存儲(chǔ)在云計(jì)算中所發(fā)現(xiàn)的Azure 表。《A Spatial Web Crawler for Discovering》,這篇文獻(xiàn)其實(shí)與單純地談?wù)撆老x(chóng)技術(shù)不一樣,一般地討論爬蟲(chóng)技術(shù),是如何在物理、軟件層面提高單體計(jì)算機(jī)的速度、分布式地進(jìn)行搜索,又或者對(duì)URL 等算法策略的優(yōu)化。而這篇文獻(xiàn)談?wù)摰目梢詺w屬另一個(gè)學(xué)科,它圍繞地緣服務(wù)器提供的地理特征,進(jìn)行空間信息的劃分,使用空間的數(shù)據(jù)源。核心來(lái)說(shuō),這是一個(gè)對(duì)地理領(lǐng)域信息系統(tǒng)的研究。地理空間數(shù)據(jù)在本質(zhì)上常常動(dòng)態(tài)并在異構(gòu)的形式提供,網(wǎng)上空間數(shù)據(jù)是一個(gè)基于地理的形式進(jìn)行發(fā)布的??臻g網(wǎng)絡(luò)爬蟲(chóng)專(zhuān)注于地理空間在地緣服務(wù)器上的功能?!禗esign of
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 3 頁(yè) 共 15 頁(yè)
,improved focused web crawler》這篇文獻(xiàn)講述的東西比較細(xì),是對(duì)URL 和錨文本的語(yǔ)義性質(zhì)的研究分析。它提出了一種技術(shù),偏重于基于語(yǔ)義重點(diǎn)的網(wǎng)絡(luò)履帶的分析探討。
3. 課題研究方向的現(xiàn)狀與發(fā)展趨勢(shì)
研究方向主要有以下六個(gè)分支: 多線程(分布式)進(jìn)行網(wǎng)絡(luò)爬蟲(chóng)的過(guò)程優(yōu)化, 基于網(wǎng)絡(luò)爬蟲(chóng)的Web 信息采集技術(shù),爬蟲(chóng)對(duì)漏洞管理平臺(tái)核心幫助,云計(jì)算模式這種支持彈性的資源化和非結(jié)構(gòu)化的數(shù)據(jù)的爬蟲(chóng)技術(shù),空間網(wǎng)絡(luò)爬蟲(chóng)這樣專(zhuān)注于地理空間在地緣服務(wù)器上研究的新科技,錨文本的語(yǔ)義性質(zhì)的研究分析。
分布式網(wǎng)絡(luò)爬蟲(chóng)的理論基礎(chǔ):它由多臺(tái)PC 機(jī)組成,其中一臺(tái)是控制節(jié)點(diǎn),其他為爬行節(jié)點(diǎn),控制節(jié)點(diǎn)負(fù)責(zé)維護(hù)所有結(jié)點(diǎn)的信息,對(duì)所有結(jié)點(diǎn)的信息進(jìn)行同步,同時(shí)在控制節(jié)點(diǎn)上進(jìn)行結(jié)點(diǎn)的添加和刪除。它分為5個(gè)模塊:URL 分析模塊、下載模塊、網(wǎng)頁(yè)分析模塊、結(jié)點(diǎn)通信模塊 、URL 分配模塊。
分布式網(wǎng)絡(luò)爬蟲(chóng)的方法可以具體到5個(gè)模塊來(lái)分析探討。URL 分析模塊是接受來(lái)自分布式模塊分配的URL 任務(wù),判斷該URL 是否被訪問(wèn)過(guò)。訪問(wèn)過(guò),進(jìn)隊(duì)列;沒(méi)訪問(wèn)過(guò),忽略。那在分布式網(wǎng)絡(luò)爬蟲(chóng)中與單臺(tái)PC 有所不同的是:?jiǎn)闻_(tái)PC 機(jī)只需要對(duì)URL 地址進(jìn)行記錄,還有域名轉(zhuǎn)換,計(jì)算復(fù)雜度低;分布式網(wǎng)絡(luò)爬蟲(chóng)中對(duì)需要IP 與域名轉(zhuǎn)換的計(jì)算量大,復(fù)雜度高。下面具體解釋?zhuān)壕S護(hù)URL 隊(duì)列,在每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)本節(jié)點(diǎn)將要訪問(wèn)的URL 隊(duì)列模塊,可以參照Mercator 系統(tǒng),每一道指向一個(gè)domain ,這樣可以避免多個(gè)線程同時(shí)訪問(wèn)一個(gè)domain 。剛剛已經(jīng)談到計(jì)算量大的問(wèn)題,是由于多道隊(duì)列的數(shù)據(jù)結(jié)構(gòu)在爬行進(jìn)行到一定階段時(shí),數(shù)據(jù)量一定分成龐大。如何解決?在內(nèi)存不能夠承載時(shí),將隊(duì)列的中間部分放在硬盤(pán)上,在內(nèi)存中只保留隊(duì)列的頭和尾。還有就是,完整的URL 是沒(méi)必要記錄的,只需要判斷URL 是否已經(jīng)下載過(guò)了。因此,可以采用哈希表存儲(chǔ)URL 的checksums, 高位存儲(chǔ)hostname 的checksum ,這樣一來(lái),來(lái)自同樣的domain 的URL 就會(huì)排列在一起。之前說(shuō)過(guò),把數(shù)據(jù)放在硬盤(pán)上。這樣實(shí)現(xiàn):建立一個(gè)LRU cache 。明顯,網(wǎng)頁(yè)鏈接的聚簇性和高位存儲(chǔ)hostname 的數(shù)據(jù)結(jié)構(gòu),使硬盤(pán)的讀寫(xiě)概率非常小,提高了爬蟲(chóng)分布式系統(tǒng)的運(yùn)行速度。IP 與域名需要轉(zhuǎn)換,是因?yàn)閁RL 地址不同但可能指向同一物理網(wǎng)頁(yè)。譬如,多個(gè)域名共同擁有一個(gè)IP ,而各個(gè)域名下的內(nèi)容是不同的;DNS 轉(zhuǎn)換導(dǎo)致的同一域名對(duì)應(yīng)的IP
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 4 頁(yè) 共 15 頁(yè)
,是不一樣的;一個(gè)站點(diǎn)多個(gè)域名。面多這種情況如何解決呢?首先,積累一定數(shù)量的域名和IP ,下載一些網(wǎng)頁(yè)判斷分別屬于哪種情況,積累下來(lái),然后針對(duì)性地取舍,避免重復(fù)收集使用。下載模塊的核心在于節(jié)點(diǎn)線程控制。主要解決的是本地節(jié)點(diǎn)與Web 端服務(wù)器的通信問(wèn)題。在前言中提到,爬蟲(chóng)技術(shù)也是基于TCP 協(xié)議的。客戶(hù)有時(shí)在同一次會(huì)話(huà)中希望從服務(wù)器端下載更多的HTML 頁(yè)面,由于HTTP1.0,該TCP 需要終止。這是可以這樣,為了節(jié)省時(shí)間和網(wǎng)絡(luò)帶寬,可以保留上次已經(jīng)建立好的鏈接。如果該鏈接沒(méi)有失效,本次可以繼續(xù)使用。詳細(xì)點(diǎn)說(shuō),就是服務(wù)器接收爬蟲(chóng)客戶(hù)端發(fā)送的請(qǐng)求消息后,先返回一個(gè)HTTP 頭信息,包含文件類(lèi)型,大小,最后修改時(shí)間等內(nèi)容,后續(xù)添加包含網(wǎng)頁(yè)的文本內(nèi)容。根據(jù)網(wǎng)頁(yè)體的大小,申請(qǐng)內(nèi)存空間準(zhǔn)備接收,有兩種情況需要放棄接收:一、網(wǎng)頁(yè)類(lèi)型不符合要求。
二、超出預(yù)定接收大小。畢竟我們現(xiàn)在討論的是多線程的網(wǎng)絡(luò)爬蟲(chóng)技術(shù),在下載模塊,重點(diǎn)在于結(jié)點(diǎn)線程模塊。結(jié)點(diǎn)線程:根據(jù)控制計(jì)算機(jī)硬件的運(yùn)行情況,把并行開(kāi)設(shè)的線程數(shù)控制在一個(gè)最佳的數(shù)量上,并監(jiān)控保證同時(shí)訪問(wèn)同一個(gè)domain 的線程數(shù)不超過(guò)n ,這樣是為了保證web 服務(wù)器不會(huì)出現(xiàn)類(lèi)似于拒絕服務(wù)攻擊DOS 反應(yīng)使得一些URL 的漏取。最好建立一個(gè)DNS 緩沖區(qū),即是緩存。這樣可以避免頻繁地查詢(xún)DNS 服務(wù)器。網(wǎng)頁(yè)分析模塊相對(duì)簡(jiǎn)單,HTML 比較靈活,URL 出現(xiàn)的語(yǔ)境較多,我們應(yīng)該參照HTML 的語(yǔ)法,給出相應(yīng)的URL 出現(xiàn)的語(yǔ)境。URL 分配模塊工作是為了協(xié)調(diào)各個(gè)節(jié)點(diǎn),將任務(wù)分配給不同的節(jié)點(diǎn),并且能夠增刪節(jié)點(diǎn)。節(jié)點(diǎn)通信模塊負(fù)責(zé)節(jié)點(diǎn)間的相互通信,除了采集器采集網(wǎng)頁(yè)時(shí)直接與Internet 交互外,其他時(shí)候所有網(wǎng)絡(luò)通訊都通過(guò)通信器完成。上次模塊通過(guò)Send ,把它的數(shù)據(jù)包以單體為目標(biāo)標(biāo)識(shí)發(fā)布。接收上層的發(fā)送請(qǐng)求后,通信器先將數(shù)據(jù)包緩存起來(lái),再通過(guò)目標(biāo)標(biāo)識(shí)維護(hù)每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)號(hào)和IP 對(duì)應(yīng)的節(jié)點(diǎn)信息。有節(jié)點(diǎn)通信模塊,可以只關(guān)注本身的策略,并且和其他模塊松耦合,方便架構(gòu)在不同的對(duì)等網(wǎng)絡(luò)上。
分布式網(wǎng)絡(luò)爬蟲(chóng)的方案,可以先講述一個(gè)中級(jí)規(guī)模的網(wǎng)頁(yè)搜集,當(dāng)然,對(duì)于一些大型的網(wǎng)站如鳳凰網(wǎng)、騰訊首頁(yè)等網(wǎng)站的全站下載,分布式系統(tǒng)仍有用武之地。先了解下對(duì)中等規(guī)模的網(wǎng)站的爬蟲(chóng)搜集,一個(gè)網(wǎng)站的host 是一樣的,因此需要在普通的任務(wù)分配基礎(chǔ)上做出一些改動(dòng),首先任務(wù)的粒度不能再選擇host ,因?yàn)檫@樣一來(lái),同一網(wǎng)站的網(wǎng)頁(yè)的哈希函數(shù)的數(shù)值是唯一的,任務(wù)只能分配在節(jié)點(diǎn)上,對(duì)于分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),顯然是不
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 5 頁(yè) 共 15 頁(yè)
,行的。粒度如果按URL 分配,粒度又太小了,由此,可以對(duì)網(wǎng)站的URL 信息收集和分析,總結(jié)出網(wǎng)站全站下載多機(jī)協(xié)同任務(wù)分配算法。舉例說(shuō)明,大型網(wǎng)站下有很多子網(wǎng)站,而同一子網(wǎng)站網(wǎng)頁(yè)的URL 有一些共同點(diǎn),它們的URL 前一兩個(gè)字都相同,這些子網(wǎng)頁(yè)的互聯(lián)關(guān)系比較緊密,子網(wǎng)站與子網(wǎng)站網(wǎng)頁(yè)的引用頻繁度沒(méi)有那么高,差別較大,可以把任務(wù)分配的粒度定為子網(wǎng)站。由于粒度的合理分配,分布式對(duì)中大型網(wǎng)站進(jìn)行全站下載是可實(shí)現(xiàn)的。
關(guān)于分布式網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的現(xiàn)狀,國(guó)內(nèi)外的一些大公司已經(jīng)有很成熟的解決方案,并已投入使用。其中以Google 研究的最早,也最先進(jìn)。在Google 公開(kāi)的網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)中,Internet Archive Crawler是可以使用多臺(tái)機(jī)器進(jìn)行爬行的,每個(gè)Crawler 進(jìn)程可分配64個(gè)站點(diǎn)同時(shí)爬行,每個(gè)站點(diǎn)只分配一個(gè)Crawler 進(jìn)行爬行。谷歌的分布式網(wǎng)絡(luò)爬蟲(chóng)技術(shù)能夠在全球處于領(lǐng)先地方,也在于它的搜索引擎在全球處于領(lǐng)先地位。Google 每天都會(huì)對(duì)使用它搜索引擎的網(wǎng)站進(jìn)行一定量的爬蟲(chóng),有了大量的數(shù)據(jù)分析,它對(duì)于網(wǎng)絡(luò)上的語(yǔ)義分析是領(lǐng)先的,而在全球大量分布的服務(wù)器,也促進(jìn)了它在分布式網(wǎng)絡(luò)爬蟲(chóng)的發(fā)展。其中它研發(fā)的Mercator 是一個(gè)非常出色的Crawler ,該技術(shù)完全用Java 實(shí)現(xiàn),它才用的數(shù)據(jù)結(jié)構(gòu)可以不管爬行規(guī)模的大小,在內(nèi)存只占有限的空間。分布式網(wǎng)絡(luò)爬蟲(chóng)現(xiàn)階段采用的技術(shù)主要是服務(wù)器集群技術(shù),由中央控制軟件進(jìn)行任務(wù)發(fā)布、負(fù)載平衡和運(yùn)行監(jiān)控。
基于爬蟲(chóng)的Web 信息采集技術(shù)的理論基礎(chǔ):分析目標(biāo)網(wǎng)站結(jié)構(gòu),確定抓取規(guī)則,擴(kuò)展Heritrix 爬蟲(chóng),對(duì)于網(wǎng)頁(yè)內(nèi)容,可以分析所得網(wǎng)頁(yè)的頁(yè)面結(jié)構(gòu)特點(diǎn),利用Jsoup 過(guò)濾頁(yè)面噪聲信息,提取內(nèi)容,在內(nèi)容索引方面,運(yùn)用Lucenne 對(duì)存儲(chǔ)在數(shù)據(jù)中的信息進(jìn)行索引,實(shí)現(xiàn)對(duì)采集信息的全文索引,在內(nèi)存呈現(xiàn)方面,可以整合Struts2、Spring 、Hibernate 這三種技術(shù)框架,搭建三層J2EE 框架,利用Web 頁(yè)面展示所抓取過(guò)濾后的信息。
Web 信息采集的的方法可以分為三部分介紹,一是Heritrix 這類(lèi)基于Java 程序語(yǔ)言的開(kāi)源聚焦Web 網(wǎng)絡(luò)爬蟲(chóng)工具,二是Jsoup 這類(lèi)HTML 解析器,方便用戶(hù)進(jìn)行內(nèi)容抽取操作。三是Lucene 這種可以完整地進(jìn)行全文檢索和查詢(xún)的開(kāi)源程序庫(kù)。Heritrix 是一個(gè)可以通過(guò)Web 操作界面,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)爬蟲(chóng)的啟動(dòng)、監(jiān)控和運(yùn)行調(diào)整。用戶(hù)利用Heritrix 可以較完整地獲取目標(biāo)站點(diǎn)的內(nèi)容,實(shí)現(xiàn)對(duì)站點(diǎn)內(nèi)容的深度復(fù)制,這里甚至可以包括對(duì)圖像、文檔在內(nèi)的非文本內(nèi)容。Heritirx 突出特點(diǎn)在于強(qiáng)大的可擴(kuò)展性,允許用戶(hù)
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 6 頁(yè) 共 15 頁(yè)
,靈活地選擇擴(kuò)展組件。有五個(gè)組件是比較重要的。中央控制器(組件),是Heritrix 進(jìn)行抓取任務(wù)的核心組件,它全程控制著整個(gè)抓取流程。它決定了哪些URL 入隊(duì),控制當(dāng)前抓取內(nèi)容的范圍。Frontier 組件,作用是為每一個(gè)線程不斷地提供URL 。ToePool ,負(fù)責(zé)抓取任務(wù)所創(chuàng)建的所有子線程。ServerCache 負(fù)責(zé)緩存所抓取的所有Host 名稱(chēng)及Server 名稱(chēng)。Crawl 組件,整個(gè)抓取工作的開(kāi)始點(diǎn)。Processor 組件,是其他多種處理器的共同父類(lèi)。上述基本讓我們了解了一個(gè)Heritrix 是如何工作的,那么Heritrix 又具備什么優(yōu)點(diǎn)呢?首先,它可在多個(gè)獨(dú)立的站點(diǎn)上持續(xù)進(jìn)行內(nèi)容爬去。其次它是采用廣度優(yōu)先搜索策略進(jìn)行頁(yè)面爬去,有利于對(duì)擴(kuò)大頁(yè)面內(nèi)容的范圍。然后,它可以?xún)H從提供的一個(gè)種子地址即可開(kāi)始爬行,進(jìn)行準(zhǔn)確地站點(diǎn)URL 內(nèi)容的收集和主機(jī)信息的收集。而且它各項(xiàng)主要部件都是高效可擴(kuò)展的,易于定制。最后它又全面良好的配置,如配置輸出日志、歸檔文件、帶寬上限設(shè)置。Jsoup 是一種HTML 解析器,它是基于MIT 許可協(xié)議發(fā)布的,可以用于商業(yè)項(xiàng)目。它的功能主要包括:(1)從某個(gè)URL 、字符串或文件中解析HTML 。(2) 利用DOM 遍歷或CSS 選擇器來(lái)查找、提取數(shù)據(jù)。(3)可操縱HTML 元素、屬性和文本(4)可依據(jù)一個(gè)安全的白名單過(guò)濾用戶(hù)提交的內(nèi)容,以防止XSS 攻擊。DOM 樹(shù)算法是Jsoup 的核心部分。DOM ,即文件對(duì)象模型,是處理可擴(kuò)展標(biāo)志語(yǔ)言的通用標(biāo)準(zhǔn)編程接口。DOM 常用于表示和處理HTML 或HTML 文檔。完整遍歷一棵DOM 樹(shù)既即可以訪問(wèn)和處理頁(yè)面中的任何一個(gè)元素。Lucenet 提供了簡(jiǎn)單而強(qiáng)大的接口,用戶(hù)可以輕松地實(shí)現(xiàn)對(duì)全文的索引和搜尋。需要提醒一點(diǎn)的是,Lucene 僅僅是一個(gè)信息檢索程序庫(kù),而不是一個(gè)完整的搜索引擎。換言之,需要開(kāi)發(fā)者對(duì)其構(gòu)建特定的全文搜索應(yīng)用,普通用戶(hù)是很難直接使用它的。Lucene 具有以下優(yōu)點(diǎn):(1)跨平臺(tái)適用性。Lucene 生成的索引文件以8位字節(jié)為基礎(chǔ),明顯的,這是能夠在兼不同平臺(tái)下使用的,CPU 的起源是8位字節(jié)的,后期才逐漸擴(kuò)展到16字節(jié),但仍然能兼容8位字節(jié)。 (2)索引優(yōu)化。在對(duì)傳統(tǒng)倒排索引應(yīng)用的基礎(chǔ)上,Lucene 實(shí)現(xiàn)了分塊索引機(jī)制,能夠面向新的文件構(gòu)建小文件索引,從而提升索引速度。另外Lucene 支持增量索引,即可以只為新插入的數(shù)據(jù)創(chuàng)建索引文件,然后與原有索引進(jìn)行合并,同樣提升了索引速度。(3) 易學(xué)習(xí)。Lucene 是一款基于Java 的優(yōu)秀的面向?qū)ο蟮南到y(tǒng)架構(gòu),因而對(duì)于Lucene 擴(kuò)展的學(xué)習(xí)難度較低,開(kāi)發(fā)人員可以十分方便地?cái)U(kuò)充新功能。(4) 獨(dú)立的文本分析接口。Lucene 內(nèi)置了一套獨(dú)立于語(yǔ)言和文件格式的文本分析接口。用戶(hù)只需要實(shí)
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 7 頁(yè) 共 15 頁(yè)
,現(xiàn)對(duì)文本分析的接口,就能實(shí)現(xiàn)對(duì)特定語(yǔ)言和文件格式的文本分析。簡(jiǎn)而言之,不同的語(yǔ)言都可以用Lucence 進(jìn)行文本分析,只要相應(yīng)地寫(xiě)好接口
(5)提供檢索工具包。Lucene 本身提供了一套強(qiáng)大的查詢(xún)引擎,用戶(hù)可以直 接方便地使用。Lucene 提供的查詢(xún)功能實(shí)現(xiàn)了布爾操作、模糊查詢(xún)(Fuzzy Search), 分組查詢(xún)等等。
基于網(wǎng)絡(luò)爬蟲(chóng)的網(wǎng)站信息采集技術(shù)有個(gè)案例,針對(duì)百度百家網(wǎng)站,直接獲取某個(gè)作者的文章列表頁(yè)面。首先完成對(duì)WebClient 對(duì)象的初始化,這是訪問(wèn)網(wǎng)頁(yè)的入口對(duì)象。接著選定Js 解析核心、禁用CSS 樣式、設(shè)置Ajax 控制器、設(shè)置超時(shí)時(shí)間、確定目標(biāo)URL 。在觸發(fā)操作對(duì)象方面,采用DOM 技術(shù),實(shí)現(xiàn)對(duì)事件觸發(fā)對(duì)象的定位。其次是明確觸發(fā)事件的類(lèi)型。最后利用DOM 技術(shù)實(shí)現(xiàn)對(duì)目標(biāo)結(jié)點(diǎn)的定位,實(shí)現(xiàn)對(duì)動(dòng)態(tài)內(nèi)容的獲取。通過(guò)上述動(dòng)作,即可完成對(duì)所有作者文章鏈接信息的采集。
基于爬蟲(chóng)的Web 采集技術(shù)的研究現(xiàn)狀。目前,信息采集系統(tǒng)在國(guó)內(nèi)外已經(jīng)足夠多了,或開(kāi)源,或商用,突出特點(diǎn)是面向整個(gè)Web 范圍來(lái)研究??梢苑譃橐韵聨最?lèi):基于整個(gè)Web 的,它給定若干個(gè)種子URL 進(jìn)行擴(kuò)充,理論上可以到整個(gè)明網(wǎng)(相對(duì)于暗網(wǎng)而言);面向主題的Web 信息采集;增量式采集,英文名是Incremental Web Crawling,特點(diǎn)是,在采集過(guò)后的一段時(shí)間,對(duì)這段內(nèi)容中發(fā)生變化的部分會(huì)再次采集,其他則不予理會(huì);Customized Web Crawling,通過(guò)與用戶(hù)交互等手段,盡可能地滿(mǎn)足用戶(hù)多元化的信息需求。分布式信息采集,前文已敘述,在此不贅述。遷移的信息采集,將Web 采集器上傳至目標(biāo)站點(diǎn)實(shí)現(xiàn)信息采集,再將采集結(jié)果回傳到本地。
基于漏洞管理平臺(tái)的聚焦爬蟲(chóng)技術(shù)的理論基礎(chǔ):漏洞管理平臺(tái)是按照當(dāng)下用戶(hù)的需求,利用爬蟲(chóng)功能從國(guó)內(nèi)外各大知名漏洞網(wǎng)站上爬取漏洞信息,并解析保存到本機(jī),方便用戶(hù)的管理查看。那管理平臺(tái)的聚焦爬蟲(chóng)技術(shù),是由漏洞管理平臺(tái)項(xiàng)目根據(jù)項(xiàng)目的具體、特殊需求,借鑒當(dāng)前國(guó)內(nèi)外前沿爬蟲(chóng)技術(shù),自主創(chuàng)新研發(fā)的一個(gè)新式爬蟲(chóng)技術(shù)。
這個(gè)技術(shù)的方法可以從它的爬蟲(chóng)接口窺探。它有爬蟲(chóng)接口子模塊,提供調(diào)用爬蟲(chóng)模塊的所有接口。它有以下三種功能:1. 設(shè)置更新爬蟲(chóng)策略,設(shè)置信息存放路徑2. 啟動(dòng)停止漏洞采集任務(wù)3. 查詢(xún)漏洞采集任務(wù)的狀態(tài)信息。配置文件解析子模塊,這是為了漏洞解析這一部分而服務(wù)的。它將每個(gè)網(wǎng)站的漏洞解析方式設(shè)置為一個(gè)XML 配置文件,簡(jiǎn)化漏洞信息解析的編
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 8 頁(yè) 共 15 頁(yè)
,碼量。這里的漏洞編碼是:CVEID ,即每一個(gè)漏洞信息的漏洞編碼,每一個(gè)CVEID 都和一條漏洞信息相對(duì)應(yīng),國(guó)內(nèi)外各大漏洞網(wǎng)站都采取了這種命名方式來(lái)發(fā)布每一條漏洞信息。網(wǎng)頁(yè)爬取子模塊,與普通的爬蟲(chóng)技術(shù)并無(wú)二致。網(wǎng)頁(yè)解析子模塊,在對(duì)于漏洞信息,有一個(gè)特點(diǎn),從NVD 和OSVDB 采樣,進(jìn)行格式分析。URL 過(guò)濾去重子模塊,這與一般的過(guò)濾去重技術(shù)也大同小異。漏洞信息保存子模塊,以XML 格式保存,寫(xiě)入文件時(shí)需要進(jìn)行加密,畢竟這些信息比較敏感。
基于爬蟲(chóng)技術(shù)的漏洞管理平臺(tái),有一個(gè)案例。因?yàn)槁┒垂芾砥脚_(tái)是華為安全能力中心的涉密項(xiàng)目,對(duì)其中的具體技術(shù)暫不討論。這里提供一些測(cè)試結(jié)果進(jìn)行講解。在網(wǎng)頁(yè)解析優(yōu)化前,新浪首頁(yè)的頁(yè)面大小是408/Kb,任務(wù)數(shù)量20,所有任務(wù)完成時(shí)間在優(yōu)化前是3.2min ,優(yōu)化后是2.7min 。網(wǎng)易首頁(yè)的頁(yè)面大小是369/Kb,任務(wù)數(shù)量20,所有任務(wù)完成時(shí)間在優(yōu)化前是3.0min ,優(yōu)化后是2.6min 。明顯可以看出域名檢索表方式優(yōu)化是有效的,這個(gè)漏洞管理平臺(tái)的聚焦爬蟲(chóng)技術(shù)是可行的。
漏洞管理平臺(tái)的爬蟲(chóng)聚焦技術(shù)的現(xiàn)狀是,爬蟲(chóng)技術(shù)已經(jīng)漸漸成為人們檢索信息的工具,慢慢成為互聯(lián)網(wǎng)的入口和指南。這時(shí)候,用戶(hù)需求是不斷發(fā)展和豐富的過(guò)程,當(dāng)然,也就有對(duì)漏洞信息的需求。聚焦爬蟲(chóng)不追求大的覆蓋率,而將目標(biāo)定為抓取某一特定主題內(nèi)容相關(guān)的網(wǎng)頁(yè)。當(dāng)然,它有不足的地方,兩點(diǎn):爬蟲(chóng)效率瓶頸問(wèn)題、URL 相關(guān)內(nèi)容改進(jìn)問(wèn)題。
云計(jì)算模式下的爬蟲(chóng)技術(shù)的理論基礎(chǔ)其實(shí)與前面講的分布式爬蟲(chóng)非常類(lèi)似,它的特點(diǎn)不在于技術(shù)上的更新,而在于計(jì)算范圍是幾何級(jí)地?cái)U(kuò)張。分布式可以理解為系統(tǒng),而云計(jì)算即是網(wǎng)絡(luò)。其中以Hadoop 為典型代表,它是Java 語(yǔ)言開(kāi)發(fā)的作為云計(jì)算的開(kāi)源平臺(tái)。
云計(jì)算爬蟲(chóng)技術(shù)的方法可以以Hadoop 為例簡(jiǎn)要講解。它是Apache 下面的一款分布式并行計(jì)算框架,依據(jù)HDFS 高容錯(cuò)的特點(diǎn),可以安置在便宜的硬件上。在Hadoop 框架中,負(fù)責(zé)計(jì)算的model 稱(chēng)為Map/Reduce負(fù)責(zé),HDFS 是Hadoop 的關(guān)鍵部分。HDFS 的特點(diǎn)在于其使得存儲(chǔ)便宜,譬如Google 在全球范圍進(jìn)行云計(jì)算的爬蟲(chóng)分布,每個(gè)服務(wù)中心每分鐘都可能燒壞一個(gè)硬件,此時(shí)硬件的成本一定不能太高。
云計(jì)算的案例之前在分布式爬蟲(chóng)已以Google 為例講解,此不贅述。 云計(jì)算式的爬蟲(chóng)技術(shù)現(xiàn)狀:已在國(guó)內(nèi)各地逐步發(fā)展,在國(guó)內(nèi),中國(guó)移動(dòng)通信公司、百度公司、新浪公司都已經(jīng)搭建起以Hadoop 為框架的數(shù)據(jù)處理
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 9 頁(yè) 共 15 頁(yè)
,平臺(tái)。云計(jì)算模式由于提供了平臺(tái)獨(dú)立性、可按需自助等功能,在2015年18屆智能下一代網(wǎng)絡(luò)的國(guó)際會(huì)議,云計(jì)算的一些提供商已經(jīng)開(kāi)始把資源整合在一起。
空間網(wǎng)絡(luò)爬蟲(chóng)的核心在于其根據(jù)地理空間研究的協(xié)議。這個(gè)協(xié)議可以使變換后的URL 發(fā)送到WFS 模塊。而WFS 模塊是記錄了檢索函數(shù)信息。例如,世界糧食首腦會(huì)議,GetCapability ,由這些關(guān)鍵字自動(dòng)生成對(duì)應(yīng)相關(guān)的URL 。當(dāng)出現(xiàn)重復(fù)的GetCapability 信息。檢索時(shí),不會(huì)再提取相關(guān)的URL 。 基于爬蟲(chóng)的語(yǔ)義智能履帶式算法:基于域名的URL 算法,估計(jì)網(wǎng)頁(yè)上鏈接的相關(guān)性,在找到頁(yè)面的相關(guān)性的過(guò)程中,繼續(xù)已確定內(nèi)容的爬行,達(dá)到平衡的最佳水平。例如,可以使用詞匯數(shù)據(jù)庫(kù),是網(wǎng)絡(luò)爬蟲(chóng)更準(zhǔn)確和精準(zhǔn)。還有一些更細(xì)的方法,我已在前文間斷地提及過(guò)。這樣的履帶式算法,是可以我們的爬蟲(chóng)效率大大提高到。
網(wǎng)絡(luò)爬蟲(chóng)技術(shù)有個(gè)關(guān)鍵問(wèn)題:爬蟲(chóng)效率。目前爬蟲(chóng)效率的問(wèn)題主要體現(xiàn)在:網(wǎng)絡(luò)的帶寬利用率低、爬蟲(chóng)的模塊功能設(shè)計(jì)性較差。網(wǎng)絡(luò)的帶寬問(wèn)題,一來(lái)隨著電信等網(wǎng)絡(luò)運(yùn)營(yíng)商的不斷發(fā)展,帶寬在可預(yù)見(jiàn)的將來(lái)是有望增加的,這時(shí)帶寬的利用率不再那么重要了,因?yàn)樵镜膸捯呀?jīng)相當(dāng)大了;二是可以采用并發(fā)工作流作為設(shè)計(jì),以此盡可能充分地利用網(wǎng)絡(luò)帶寬資源。至于模塊功能的設(shè)計(jì)性較差,可以在網(wǎng)絡(luò)爬取模塊的工作流程上進(jìn)行優(yōu)化,減少因任務(wù)等待而造成時(shí)間浪費(fèi),在網(wǎng)頁(yè)解析模塊進(jìn)行優(yōu)化,減少重復(fù)采集工作。這些技術(shù)已經(jīng)發(fā)展得越來(lái)越成熟。
網(wǎng)絡(luò)爬蟲(chóng)技術(shù)有一個(gè)尚未解決的難點(diǎn):如何將不同的爬蟲(chóng)系統(tǒng),統(tǒng)一到一個(gè)爬蟲(chóng)平臺(tái)。這樣的整合要使得它們的爬蟲(chóng)效果有一加一大于二的效果。
這幾年,Internet ,尤其是互聯(lián)網(wǎng),在令人難以想象的速度發(fā)展,以至于有些膾炙人口的句子:這是一個(gè)豬都會(huì)飛的時(shí)代。信息的增長(zhǎng)何嘗不是讓人難以想象。越來(lái)越多人在互聯(lián)網(wǎng)上發(fā)布信息,發(fā)表自己的見(jiàn)解,也越來(lái)越多人需要找到有效的信息。而Web 是無(wú)結(jié)構(gòu)的、動(dòng)態(tài)的,這是爬蟲(chóng)技術(shù)發(fā)展的動(dòng)力是巨大的。在如此巨大的動(dòng)力推動(dòng)下,加之目前所了解到爬蟲(chóng)技術(shù)現(xiàn)狀,我相信,爬蟲(chóng)技術(shù)還有相當(dāng)大發(fā)展的空間。畢竟Google 在我寫(xiě)這篇文章時(shí),還沒(méi)有把每個(gè)IP 的location 可爬取技術(shù)公布出來(lái)。
4. 總結(jié)
我在這篇文章主要針對(duì)爬蟲(chóng)的效率問(wèn)題,講解了分布式爬蟲(chóng)的相關(guān)技
《 下一代互聯(lián)網(wǎng)技術(shù) 》試卷 卷 第 10 頁(yè) 共 15 頁(yè)