• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    垂直搜索引擎爬蟲系統(tǒng)的設(shè)計(jì)

    2010-04-21 05:18:24長(zhǎng)江大學(xué)計(jì)算機(jī)科學(xué)學(xué)院湖北荊州434023
    關(guān)鍵詞:爬蟲觀察者搜索引擎

    李 敏,趙 君 (長(zhǎng)江大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,湖北荊州434023)

    在某些專業(yè)領(lǐng)域,如房地產(chǎn)、電子商務(wù)領(lǐng)域等,傳統(tǒng)搜索引擎已經(jīng)無(wú)法滿足用戶的需求,為解決該問(wèn)題,研究者提出垂直搜索引擎的設(shè)計(jì)構(gòu)想。垂直搜索是針對(duì)某一行業(yè)的專業(yè)搜索引擎方式,其對(duì)互聯(lián)網(wǎng)海量信息中的某類專門信息的搜集和整合。爬蟲系統(tǒng)負(fù)責(zé)獲取互聯(lián)網(wǎng)中的海量數(shù)據(jù),是垂直搜索引擎的核心,對(duì)整個(gè)引擎的運(yùn)行效率有著重大影響。為此,筆者就如何設(shè)計(jì)高效率的垂直搜索引擎爬蟲系統(tǒng)進(jìn)行了詳細(xì)探討。

    1 垂直搜索引擎的工作模式

    垂直搜索引擎首先委派爬蟲系統(tǒng)到目的網(wǎng)站下載相應(yīng)信息,并將這些信息存入網(wǎng)頁(yè)庫(kù),然后由索引模塊對(duì)網(wǎng)頁(yè)庫(kù)進(jìn)行索引結(jié)構(gòu)化處理,形成相應(yīng)的索引文件 (索引庫(kù))[1]。當(dāng)用戶在網(wǎng)頁(yè)終端查詢信息時(shí),系統(tǒng)會(huì)檢索索引文件,并將最終結(jié)果呈現(xiàn)給用戶,其工作模式如圖1所示。

    圖1 垂直搜索引擎的工作模式圖

    2 爬蟲系統(tǒng)的運(yùn)行流程

    因?yàn)榕老x系統(tǒng)的運(yùn)行和管理是整個(gè)系統(tǒng)的核心,所以,對(duì)抓取龐大數(shù)據(jù)的爬蟲系統(tǒng)而言,設(shè)計(jì)一個(gè)科學(xué)的運(yùn)行流程至關(guān)重要,因?yàn)樵摿鞒讨苯佑绊懼麄€(gè)搜索引擎的工作效率。在爬蟲系統(tǒng)的運(yùn)行過(guò)程當(dāng)中,要充分考慮共享資源的互斥訪問(wèn)和運(yùn)行效率之間的矛盾,應(yīng)盡量減少爬蟲在訪問(wèn)隊(duì)列中的等待時(shí)間,并適當(dāng)?shù)剡\(yùn)用緩沖區(qū) (如隊(duì)列緩沖區(qū)或棧緩沖區(qū))[2]。根據(jù)效率優(yōu)先的設(shè)計(jì)原則,筆者所設(shè)計(jì)的該爬蟲系統(tǒng)的運(yùn)行流程圖如圖2所示。

    圖2 爬蟲系統(tǒng)運(yùn)行流程圖

    3 爬蟲系統(tǒng)的主要業(yè)務(wù)邏輯

    爬蟲系統(tǒng)的主要業(yè)務(wù)邏輯包括爬蟲運(yùn)行過(guò)程當(dāng)中的配置參數(shù)及其數(shù)據(jù)結(jié)構(gòu),筆者僅就配置參數(shù)的相關(guān)內(nèi)容加以闡述。

    爬蟲運(yùn)行過(guò)程當(dāng)中的配置參數(shù)包括授權(quán)參數(shù)、頻道配置參數(shù)、數(shù)據(jù)庫(kù)配置參數(shù)、任務(wù)配置參數(shù)和爬蟲抓取參數(shù)[2]。其中授權(quán)參數(shù)包括頻道數(shù)量、單個(gè)頻道數(shù)據(jù)量上限、總數(shù)據(jù)量上限、頻道內(nèi)任務(wù)數(shù)上限、工作線程數(shù)上限、深度上限、是否啟用抓圖功能、是否啟用視頻批量抓取功能、是否啟用任務(wù)調(diào)度功能。

    為了用戶操作方便,一般將數(shù)據(jù)庫(kù)配置參數(shù)集成到頻道配置參數(shù)中。因此,頻道配置參數(shù)包括頻道數(shù)量、頻道名、頻道字段屬性 (字段名、字段是否為空)、頻道數(shù)據(jù)庫(kù)連接配置、數(shù)據(jù)表配置和任務(wù)基本信息配置。頻道數(shù)據(jù)庫(kù)連接配置中,根據(jù)目前的業(yè)務(wù)需要,數(shù)據(jù)庫(kù)類型暫時(shí)設(shè)置為 SqlServer、MySql和Oracle,并預(yù)留好接口,以便隨時(shí)增加數(shù)據(jù)庫(kù)類型。用戶在此設(shè)置服務(wù)器地址、用戶名、密碼和數(shù)據(jù)庫(kù)。在數(shù)據(jù)表配置里,用戶可以進(jìn)行如下操作:①定義多個(gè)信息儲(chǔ)存表和每個(gè)表的最大記錄數(shù),以分散單個(gè)表的訪問(wèn)負(fù)荷;②設(shè)定每個(gè)字段的字段名和長(zhǎng)度,根據(jù)其需要設(shè)置去重字段和增加從表;③根據(jù)預(yù)先設(shè)置的字段定義字段的名稱和長(zhǎng)度 (為保證容錯(cuò)性,字段的類型均為字符串型),對(duì)某個(gè)大容量字段設(shè)定從表 (如視頻采集中的URL地址)。此外,任務(wù)基本信息配置包括任務(wù)的ID和任務(wù)名,用于樹(shù)形菜單的顯示。

    任務(wù)配置參數(shù)包括任務(wù)基本屬性、路徑配置、抓取規(guī)則配置和任務(wù)調(diào)度配置。軟件啟動(dòng)后,將讀取頻道配置信息和任務(wù)配置信息。任務(wù)基本屬性選項(xiàng)卡中可以配置任務(wù)名稱、所屬頻道、爬蟲抓取延遲[3](為避開(kāi)大網(wǎng)站反抓取機(jī)制,需要設(shè)置延遲)、工作線程數(shù)、爬行深度 (入口頁(yè)面的深度為1)、有效數(shù)據(jù)抓取深度[3](為提高爬蟲抓取效率,可以設(shè)定目標(biāo)數(shù)據(jù)所在頁(yè)面的深度,以避開(kāi)無(wú)效頁(yè)面的干擾)。爬蟲抓取延遲有3項(xiàng)選擇:沒(méi)有延時(shí)、固定延時(shí)和隨機(jī)延時(shí),用戶可以根據(jù)實(shí)際情況選擇。在路徑配置和抓取規(guī)則配置中,將動(dòng)態(tài)路徑規(guī)則、靜態(tài)路徑規(guī)則和固定字段值等功能放在同一個(gè)窗口里,以減少操作步驟,從而增加操作友好性。同時(shí)增加數(shù)據(jù)抽取測(cè)試頁(yè)面,讓用戶可以實(shí)時(shí)查看配置的正確性。爬蟲系統(tǒng)還可對(duì)抓取后的數(shù)據(jù)進(jìn)行分析和處理,即添加數(shù)據(jù)分析功能,用戶能夠根據(jù)實(shí)際需要對(duì)每個(gè)字段對(duì)應(yīng)的抽取值進(jìn)行替換、篩選和補(bǔ)充。任務(wù)調(diào)度配置的內(nèi)容包括用戶可以設(shè)置是否啟用任務(wù)調(diào)度以及調(diào)度起始時(shí)間、調(diào)度終止時(shí)間。如果起始時(shí)間小于當(dāng)前時(shí)間,則當(dāng)前時(shí)間為起始時(shí)間;如果終止時(shí)間小于當(dāng)前時(shí)間,則調(diào)度無(wú)效,此外,還可以設(shè)置調(diào)度頻率。

    爬蟲抓取參數(shù)為非可視化技術(shù)內(nèi)核,是爬蟲抓取功能的實(shí)現(xiàn)部分,將根據(jù)各塊配置進(jìn)行數(shù)據(jù)抓取。爬蟲抓取參數(shù)包括主控制臺(tái)和分析爬蟲。該模塊可實(shí)現(xiàn)如下功能:①主控制臺(tái)線程負(fù)責(zé)抓取全站URL,并根據(jù)用戶的設(shè)置過(guò)濾掉無(wú)效的和重復(fù)的URL,同時(shí)控制分析線程的運(yùn)行狀態(tài)。根據(jù)用戶的配置,將符合要求的URL記錄到文件或數(shù)據(jù)庫(kù)中,已記錄者不再記錄。當(dāng)所有URL讀取完成,自動(dòng)按用戶定義的規(guī)則處理還沒(méi)有內(nèi)容抽取的URL。②根據(jù)用戶配置可以采集JavaScript中的網(wǎng)址。③采集需要登錄后才能查看的信息。④入口網(wǎng)址規(guī)則中可設(shè)定多個(gè)變化參數(shù),如Test.aspx?param1=a¶m2=b,其中參數(shù)值a和b都可以設(shè)為動(dòng)態(tài)參數(shù);⑤用戶可以使用可視化正則規(guī)則生成器 (動(dòng)態(tài)路徑生成器)。⑥通過(guò)加入代理 (自定義代理,采集過(guò)程中可自動(dòng)定時(shí)切換成代理模式)等功能突破網(wǎng)站防采集機(jī)制,代理的配置放在入口URL中。⑦設(shè)定網(wǎng)址讀取上限時(shí)間,如超過(guò)5s讀取不成功的網(wǎng)址,自動(dòng)丟棄該網(wǎng)址。

    4 爬蟲系統(tǒng)用到的主要設(shè)計(jì)模式

    在該系統(tǒng)設(shè)計(jì)中,使用的模式有單件模式、觀察者模式、工廠模式和抽象工廠模式。在上述模式中,觀察者模式最為常用,其目的是降低各個(gè)對(duì)象之間的耦合度,使各個(gè)組件更利于維護(hù)。觀察者模式包括觀察者接口IObserver、被觀察主體接口IObservable、被觀察主體抽象類SubjectBase,其模型圖分別見(jiàn)圖3和圖4。凡是需要拋出事件的對(duì)象 (即被觀察的對(duì)象)均繼承IObservable接口或SubjectBase抽象類;凡是根據(jù)外部事件更新的對(duì)象 (即觀察者)均繼承IObserver接口,并實(shí)現(xiàn)Update方法,這樣就形成了一種松散耦合的方式,降低了觀察者對(duì)被觀察對(duì)象的依賴。

    圖3 觀察者接口的類模型圖

    5 爬蟲系統(tǒng)的項(xiàng)目信息及其關(guān)系圖

    該設(shè)計(jì)模塊 (解決方案)包含7個(gè)子項(xiàng)目,從低層到高層分別是 DevHelper、Common、Kernel、DataProvider、Components、 Configuration(Controls)和 App。其中,DevHelper為第三方開(kāi)源工具項(xiàng)目,包含眾多功能強(qiáng)大的第三方工具源代碼。

    Common為通用項(xiàng)目,包含各種通用功能,各種通用模式均定義在這個(gè)項(xiàng)目中。該項(xiàng)目中還包括線程管理器接口IThreadManager,任務(wù)狀態(tài)枚舉 TaskStateEnum,通用參數(shù)類CommontArgs(解決方案中被觀察對(duì)象拋出的數(shù)據(jù)均為CommontArgs的對(duì)象),線程管理器抽象工廠類 AbsThreadManagerFactory(用以制造線程管理器對(duì)象),同步隊(duì)列類SyncQueue,同步字典類SyncDictionary,運(yùn)行時(shí)錯(cuò)誤處理委托RuntimeErrorEventHandler(用以定義運(yùn)行時(shí)錯(cuò)誤處理事件,是一種特殊的觀察者模式,和普通觀察者模式有所區(qū)別),通用事件處理委托CommonEventHandler(用以定義普通事件)??梢暬疿Path生成器模塊也在該項(xiàng)目中定義和實(shí)現(xiàn)。

    圖4 被觀察對(duì)象的類模型圖

    Kernel為爬蟲系統(tǒng)的業(yè)務(wù)核心項(xiàng)目,所有的接口和核心業(yè)務(wù)類,包括配置文件的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)讀取和保存函數(shù)的實(shí)現(xiàn),此外,還包括配置類ConfigData的定義、多線程中線程池管理器CrawlerThreadManagerPool、多線程管理器CrawlerThreadManager的實(shí)現(xiàn)、線程運(yùn)行類CrawlerWork的定義、頁(yè)面信息類PageInfo、頁(yè)面信息管理器類PageInfoManager和運(yùn)行時(shí)信息處理類 RuntimeSaveInfo。爬蟲運(yùn)行時(shí)RuntimeSaveInfo類只有一個(gè)對(duì)象,爬蟲每解析一條合格數(shù)據(jù),都要通知該對(duì)象,以記錄運(yùn)行時(shí)的信息。

    DataProvider為數(shù)據(jù)訪問(wèn)模塊,其功能是將采集到的數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中 (包括數(shù)據(jù)處理接口IDataProvider的實(shí)現(xiàn));Components為與運(yùn)行時(shí)有關(guān)的通用功能模塊;Configuration為控件模塊,所有與配置相關(guān)的用戶控件均定義在該項(xiàng)目中;App為運(yùn)行項(xiàng)目。7個(gè)項(xiàng)目的邏輯依賴關(guān)系如圖5所示。

    圖5 項(xiàng)目邏輯依賴關(guān)系圖

    6 結(jié) 語(yǔ)

    從垂直搜索引擎的工作模式入手,根據(jù)搜索效率優(yōu)先和功能模塊之間高內(nèi)聚低耦合的原則,對(duì)如何設(shè)計(jì)高效率的爬蟲系統(tǒng)的進(jìn)行了詳細(xì)探討,并論述了該方案的業(yè)務(wù)邏輯和主要設(shè)計(jì)模式,進(jìn)而在此基礎(chǔ)上構(gòu)建了爬蟲系統(tǒng)項(xiàng)目邏輯依賴關(guān)系圖。經(jīng)測(cè)試,在網(wǎng)絡(luò)不擁堵的情況下,單日24h可采集并分析40萬(wàn)條數(shù)據(jù),因而該系統(tǒng)具有非常好的運(yùn)行效率。此外,該設(shè)計(jì)方案還具有良好的可維護(hù)性和伸縮性,為今后進(jìn)一步開(kāi)展再編程和擴(kuò)展的研究工作提供了方便。

    [1]胡燕.基于Web信息抽取的專業(yè)知識(shí)獲取方法研究[D].武漢:武漢理工大學(xué),2007.

    [2]楊堅(jiān)爭(zhēng),李朝平.垂直搜索引擎及其應(yīng)用 [J].遙感信息,2005,(10):23~25.

    [3]呂林濤,陳麗萍,周紅芳.面向垂直搜索引擎的主題提取算法[J].計(jì)算機(jī)工程,2009,35(15):24~26.

    猜你喜歡
    爬蟲觀察者搜索引擎
    觀察者
    利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
    基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
    冷靜而又理性的觀察者——德國(guó)華人作家劉瑛訪談
    利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
    大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
    電子制作(2017年9期)2017-04-17 03:00:46
    網(wǎng)絡(luò)搜索引擎亟待規(guī)范
    基于Nutch的醫(yī)療搜索引擎的研究與開(kāi)發(fā)
    廣告主與搜索引擎的雙向博弈分析
    觀察者模式在Java 事件處理中的應(yīng)用研究*
    上饶县| 额济纳旗| 屏边| 莆田市| 怀柔区| 济源市| 东乌珠穆沁旗| 赤峰市| 当阳市| 铜川市| 怀集县| 滦南县| 乌苏市| 洞口县| 赫章县| 平定县| 依安县| 墨竹工卡县| 大兴区| 长白| 汪清县| 临潭县| 锦州市| 潼南县| 邢台市| 东城区| 台安县| 大城县| 玛纳斯县| 通渭县| 新蔡县| 枣强县| 武隆县| 侯马市| 玉山县| 沙田区| 达州市| 巫溪县| 东兰县| 西丰县| 龙陵县|