freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

myeclipse集成lucene文檔解析與網(wǎng)絡蜘蛛heritrix-資料下載頁

2025-06-07 13:37本頁面
  

【正文】 。在頁面的中央有一道狀態(tài)欄,用于標識當前正在運行的抓取任務。如圖106所示:圖106 抓取任務的狀態(tài)欄在這個WebUI的幫助下,用戶就可以開始使用Heritrix來抓取網(wǎng)頁了。 在Eclipse里配置Heritrix的開發(fā)環(huán)境講完了通過命令行方式啟動的Heritrix,當然要講一下如何在Eclipse中配置Heritrix的開發(fā)環(huán)境,因為可能需要對代碼進行調(diào)試,甚至修改一些它的源代碼,來達到所需要的效果。下面來研究一下Heritrix的下載包。(1)webapps文件夾是用來提供Servlet引擎的,也就是提供Heritrix的WebUI的部分,因此,在構建開發(fā)環(huán)境時必不可少。conf文件夾是用來提供配置文件的,因此也需要配置進入工程。Lib目錄下主要是Heritrix在運行時需要用到的第三方的軟件,因此,需要將其設定到Eclipse的Build Path下。最后就是Heritrix的jar包了,將其解壓,可以看到其內(nèi)部的結構如圖107所示。圖107 Heritrix的Jar包的結構(2)根據(jù)圖107所示,應該從Heritrix的源代碼包中把這些內(nèi)容取出,然后放置到工程中來。Heritrix的源代碼包解壓后,只有兩個文件夾,如圖108所示。圖108 Heritrix的源代碼包的結構(3)只需在src目錄下,把圖107中的內(nèi)容配全,就可以將工程的結構完整了。如圖109所示。圖109 src目錄下的內(nèi)容(4)圖1010和圖1011是筆者機器上的Heritrix在Eclipse中的工程配置好后的截圖,以及workspace中文件夾的預覽。 圖1010 Eclipse工程視圖下的包結構 圖1011 文件夾中的工程其中,org目錄內(nèi)是Heritrix的源代碼,另外,筆者將conf目錄去掉了。在圖1010中,讀者可能沒有看到Heritrix所使用到的Jar包,這是因為在工程視圖中,它們被過濾器過濾掉了,實際上,所有l(wèi)ib目錄下的jar包都已經(jīng)被加進了build path中。(5)不過,讀者很有可能遇到這樣的情況,那就是在將所有的jar包都導入后,工程編譯完成,卻發(fā)現(xiàn)在左邊的package explorer中出現(xiàn)了大量的編譯錯誤。如圖1012所示。圖1012 出現(xiàn)的編輯錯誤(6)隨便打開一個出錯的文件,如圖1013所示,會發(fā)現(xiàn)大量的錯誤都來自于“assert”關鍵字。這種寫法似乎Eclipse不認識。圖1013 出錯的程序(7)解決問題的關鍵在于,Eclipse的編譯器不認識assert這個關鍵字??梢栽凇斑x項”,然后重啟編譯整個工程就可以了。如圖1014所示。圖1014 改變編譯器的語法等級(8)在重新編譯完整個工程后,筆者的Eclipse中仍然出現(xiàn)了一個編譯錯誤,如圖1015所示。圖1015 一個仍然存在的錯誤從代碼看來,這是因為在使用條件表達式,對strippedFileName這個String類型的對象賦值時,操作符的右則出現(xiàn)了一個char型的常量,因此影響了編譯。暫且不論為什么在Heritrix的源代碼中會出現(xiàn)這樣的錯誤,解決問題的辦法就是將char變成String類型,即:(strippedFileName != null? strippedFileName: )。(9)當這樣修改完后,整個工程的錯誤就被全部解決了,也就可以開始運行Heritrix了。,如圖1016所示。圖1016 在Eclipse中運行Heritrix(10)當看到圖1017所示的界面時,就說明Heritrix已經(jīng)成功的在Eclipse中運行,也就意味著可以使用Eclipse來對Heritrix進行斷點調(diào)試和源碼修改了。圖1017 在Eclipse中成功的運行 創(chuàng)建一個新的抓取任務,已經(jīng)看到了Heritrix成功運行后的WebUI,接下來,就要帶領讀者來創(chuàng)建一個新的抓取作務。(1)單擊WebUI菜單欄上的“Jobs”標簽,就可以進入任務創(chuàng)建頁面。如圖1018所示。圖1018 菜單欄上的“Jobs”標簽(2)在任務創(chuàng)建頁面中,有4種創(chuàng)建任務的方式,如圖1019所示,具體含義如下。l Based on existing job:以一個已經(jīng)有的抓取任務為模板,創(chuàng)建所有抓取屬性和抓取起始URL的列表。l Based on a recovery:在以前的某個任務中,可能設置過一些狀態(tài)點,新的任務將從這個設置的狀態(tài)點開始。l Based on a profile:專門為不同的任務設置了一些模板,新建的任務將按照模板來生成。l With defaults:這個最簡單,表示按默認的配置來生成一個任務。圖1019 “任務”菜單中在Heritrix中,一個任務對應一個描述文件。每次創(chuàng)建一個新任務時。文件中詳細記錄了Heritrix在運行時需要的所有信息。例如,它包括該用戶所選擇的Processor類、Frontier類、Fetcher類、抓取時線程的最大數(shù)量、連接超時的最大等待時間等信息。上面所說的4種創(chuàng)建抓取任務的方式。其中,第4種With defaults。在所創(chuàng)建的Eclipse工程或是命令行啟動的Heritrix下載包中,\default目錄下的。,在此還不必深究。因為它里面所有的內(nèi)容,都會在WebUI上看到。(3)單擊With defaults鏈接,創(chuàng)建一個新的抓取任務,如圖1020所示。圖1020 新的抓取任務(4)在新建任務的名稱上,填入“Sohu_news”,表示該抓取任務將抓取搜狐的新聞信息。在Description中隨意填入字符,然后再在seeds框中,填入搜狐新聞的網(wǎng)址。這里需要解釋一下seeds的含義。所謂seeds,其實指的是抓取任務的起始點。每次的抓取,總是需要從一個起始點開始,在得到這個起始點網(wǎng)頁上的信息后,分析出新的地址加入抓取隊列中,然后循環(huán)抓取,重復這樣的過程,直到所有鏈接都分析完畢。(5)在圖1020中,設置了搜狐新聞的首頁為種子頁面,以此做為起始點。用戶在使用時,也可以同時輸入多個種子,每個URL地址單獨寫在一行上,如圖1021所示。圖1021 多個種子的情況當然,憑著目前的設置,還沒法開始抓取網(wǎng)頁,還需要對這個任務進行詳細的設置。 設置抓取時的處理鏈在圖1021中,seeds文本框下有一排按鈕,單擊“Modules”按鈕,就進入了配置抓取時的處理鏈的頁面,如圖1022所示。圖1022 配置處理鏈的頁面從上而下,可以看到,需要配置的內(nèi)容共有7項,其中CrawlScope和Frontier是兩個最重要的組件。CrawlScope用于配置當前應該在什么范圍內(nèi)抓取網(wǎng)頁鏈接。比如,如果選擇BroadScope,則表示當前抓取的范圍不受限制,但如果選擇了HostScope,則表示抓取的范圍在當前的Host內(nèi)。從筆者的經(jīng)驗看來,在抓取時,無論是HostScope或PathScope都不能真正的限制到抓取的內(nèi)容。需要對Scope內(nèi)的代碼進行一定的修改才可以,因此,暫時選擇BroadScope來充當示例中的范圍限定,其實也就是對范圍不做任何的限定。,抓取任何可以抓取到的信息。如圖1023所示。圖1023 設置ScopeFrontier則是一個URL的處理器,它將決定下一個被處理的URL是什么。同時,它還會將經(jīng)由處理器鏈所解析出來的URL加入到等待處理的隊列中去。在例子中,使用BdbFrontier類來做為處理器,全權掌管URL的分配。如圖1024所示。圖1024 設置Frontier除了這兩個組件外,還有5個隊列要配。這五個隊列根據(jù)先后的順序,就依次組成了Heritrix的整個處理器鏈。5個隊列的含義分別如下:(1)PreProcessor:這個隊列中,所有的處理器都是用來對抓取時的一些先決條件做判斷的。,它是整個處理器鏈的入口。如圖1025所示。圖1025 設置PreProcessor(2)Fetcher:從名稱上看,它用于解析網(wǎng)絡傳輸協(xié)議,比如解析DNS、HTTP或FTP等。在演示中,主要使用FetchDNS和FetchHTTP兩個類。如圖1026所示。圖1026 設置Fetcher(3)Extractor:它的名字就很好的揭示了它的作用。它主要用是于解析當前獲取到的服務器返回內(nèi)容,這些內(nèi)容通常是以字符串形式緩存的。在這個隊列中,包括了一系列的工具,如解析HTML、CSS等。在解析完畢,取出頁面中的URL后,將它們放入隊列中,等待下次繼續(xù)抓取。在演示中,使用兩種Extractor,即ExtractorHTTP和ExtractorHTML。如圖1027所示。圖1027 設置Extractor(4)Writer:主要是用于將所抓取到的信息寫入磁盤。通常寫入磁盤時有兩種形式,一種是采用壓縮的方式寫入,在這里被稱為Arc方式,另一種則采用鏡象方式寫入。當然處理起來,鏡象方式要更為容易一些,因此,在演示中命名用鏡象Mirror方式。如圖1028所示。圖1028 設置Writer(5)PostProcessor:在整個抓取解析過程結束后,進行一些掃尾的工作,比如將前面Extractor解析出來的URL有條件的加入到待處理隊列中去。如圖1029所示。圖1029 設置PostProcessor值得一提的是,在處理器鏈的設置過程中,每一個隊列中的處理器都是要分先后順序的,信息的處理流程實際上是不可逆的,因此,在設置時,可以看見在隊列的右側總是有“Up”、“Down”和“Remove”這樣的操作,以幫助能夠正確的設置其順序。在設置完Hertrix所需的處理鏈后,仍然還不能夠馬上開始抓取任務,還需對默認的運行時參數(shù)做一些修改,以適應真正的需要。 設置運行時的參數(shù)在設置完處理鏈后,在頁面頂部或底部都可以找到如圖1030所示的菜單項,單擊“Settings”鏈接,就進入了屬性設置的頁面,如圖1030所示。圖1030 進入“Settings”在屬性設置頁面上有非常多的輸入域,Heritrix在抓取網(wǎng)頁時,這些域是用來對的各個組件的值進行預設,如圖1031所示。圖1031 屬性配置頁面由于頁面上的內(nèi)容非常多,使用者可能無法全部了解它們的作用。所以Heritrix提供了一個輔助功能,來在最大程度上讓使用者了解每個參數(shù)的含義。如圖1032所示。圖1032 屬性提示可以看到,在每個屬性的右側都有一個小問號,當單擊問號時,就會彈出一個Javascript的Alert提示框,上面介紹了當前屬性的作用。例如,在上圖中單擊“maxbytesdownload”屬性,通過Alert的提示可以知道,它表示的是抓取器最大下載的字節(jié)數(shù),當下載字節(jié)數(shù)超過這個屬性上所設定的值時,抓取就會自動停止。另外,如果將這個值設為0,則表示沒有限制。事實上,當在第一次使用Heritrix時,所需要設置的參數(shù)并不多,以默認設置為主。以下就來介紹一些必須要在第一次使用時就要配置好的參數(shù)。1.maxtoethreads該參數(shù)的含義很容易了解,它表示Heritrix在運行該抓取任務時,為任務分配多少個線程進行同步抓取。該參數(shù)的默認值為100,而事實上根據(jù)筆者的經(jīng)驗,在機器配置和網(wǎng)絡均很好的情況下,設置50個線程數(shù)就已經(jīng)足夠使用了。2.HTTPHeader在HTTPHeader這個屬性域下面,包括兩個屬性值“useragent”和“from”。默認情況下,這兩個屬性的值如圖1033所示。圖1033 默認的情況很明顯,這樣的值是無法完成真實的HTTP協(xié)議的模擬的,所以,必須要將值改掉。圖1034是筆者機器上的一種配置,讀者可以借鑒。圖1034 一種正確的配置l “@VERSION@”字符串需要被替換成Heritrix的版本信息。l “PROJECT_URL_HERE”可以被替換成任何一個完整的URL地址。l “from”屬性中不需要設置真實的Email地址,只需是格式正確的郵件地址就可以了。當正確設置了上述的兩個屬性后,Heritrix就具備了運行的條件。單擊“Submit”鏈接,提交這個抓取任務,如圖1035所示。圖1035 提交任務“Submit job” 運行抓取任務(1)當單擊“Submit job”鏈接后,會看到圖1036所示的頁面。圖中最上方很清楚的顯示了“Job created”,這表示剛才所設置的抓取任務已經(jīng)被成功的建立。同時,在下面的“Pending Jobs”一欄,可以清楚的看到剛剛被創(chuàng)建的Job,它的狀態(tài)目前為“Pending”。圖1036 Job提交后的頁面(2)下面啟動這個任務。回到“Console”界面上,可以看到,如圖1037所示,剛剛創(chuàng)建的任務已經(jīng)顯示了出來,等待我們開始它。圖1037 Job提交后的Console界面(3)在面版的右測,它顯示了當前Java虛擬機的一些狀態(tài),如圖1038所示,可以看到當前的堆大小為4184KB,而已經(jīng)被使用了3806KB,另外,最大的堆內(nèi)容可以達到65088KB,也就是在64M左右。圖1038 內(nèi)存狀態(tài)顯示(4)此時,單擊面版中的“Start”鏈接,就會將此時處于“Pending”狀態(tài)的抓取任務激活,令其開始抓?。?)在圖1039中,剛才還處于“Start”狀態(tài)的鏈接已經(jīng)變?yōu)榱薍old狀態(tài)。這表明,抓取任務已經(jīng)被激活。圖1039 抓取開始(6)此時,面版中出現(xiàn)了一條抓取狀態(tài)欄,它清楚的顯示了當前已經(jīng)被抓取的鏈接數(shù)量,另外還有在隊列中等待被抓取的鏈接數(shù)量,然后用一個百分比顯示出來。(7)在綠紅相間的長條左側,是幾個實時的運行狀態(tài),其中包括抓取的平均速度(KB/s)和每秒鐘抓取的鏈接數(shù)(URIs/sec),另外的統(tǒng)計還包括抓取任務所消耗的時間和剩余的時間,不過這種剩余時間一般都不準,因為URI的數(shù)量總是在不斷變化,每當分析一個網(wǎng)頁,就會有新的URI加入隊列中。如圖1040所示。圖1040 抓取的速度和時間(8)在綠紅相間的長條右側,是當前的負載,它顯示了當前活躍的線程數(shù)量,同時,還統(tǒng)計了Heritrix內(nèi)部的所有隊列的平均長度。如圖1041所示。圖1041 線程和隊列負載(9)從圖1040和圖1041中看到,真正的抓取任務還沒有開始,隊列中的總URI數(shù)量,以及下載的速率都還基本為0。這應該還處于接收種子URL的網(wǎng)頁信息的階段。讓我們再來看一下當Heritrix運行一段時間后,整個系統(tǒng)的資源消耗和進度情況。(10)在圖1042中,清楚的看到系統(tǒng)的資源消耗。其中,每秒下載的速率已經(jīng)達到了23KB,另外。在負載方面,初設的50個線程均處于工作狀態(tài),最長的隊列長度已經(jīng)達到了415個URI,平均長度為5。從進度條上看,總共有3771個URI等待抓取,已經(jīng)完成了718個URI的抓取,另外,下載的字節(jié)總數(shù)也已經(jīng)達到了1390KB。再觀察一下左邊,僅用時32s??梢?,多線程抓取的速度還是很快的。圖1042 系統(tǒng)運行一段時間后的情況(11)不過,當抓取繼續(xù)進行時,觀察Java虛擬機的內(nèi)存使用,發(fā)現(xiàn)其已達飽合狀態(tài)。64M的最大Heap顯然不夠用。如圖1043所示。圖1043 Java虛擬機的內(nèi)存使用(12)由于這僅是一次演示,可以忽略內(nèi)存的影響。但在真正的開發(fā)過程中,使用Heritrix時,至少應為其分配512M的最大HeapSize,也就是在啟動它時,應該設置Xmx512m這個屬性。在使用命令行方式啟動Heritrix的腳本中,筆者已經(jīng)為其加入了該參數(shù),而如果要在使用Eclipse啟動Heritrix時也設置該參數(shù),具體的設置方法如圖1044所示。圖1044 在Eclipse中加入啟動參數(shù)(13)按圖1044所示,輸入Java虛擬機的參數(shù),就可以增大Heritrix的最大可用內(nèi)存。如圖1045是使用了Xmx512m參數(shù)后的Console界面。圖1045 使用了512m的HeapSize在運行的過程中,值得注意的一點是,進度條的百分比數(shù)量并不是準確的。因為這個百分比實際上是已經(jīng)處理的鏈接數(shù)和總共分析出的鏈接數(shù)的比值。當頁面在不斷被抓取分析時,鏈接的數(shù)量也會不斷的增加,因此,這個百分比的數(shù)字也在不斷的變化。例如如圖1046所示,此時總共抓取到的鏈接數(shù)已經(jīng)達到了12280個,處理了799個,它的百分比數(shù)量為6%,這顯然比圖1042或圖1039中的要小。圖1046 抓取了799的鏈接讀者可能已經(jīng)發(fā)現(xiàn),在Heritrix中,大量的鏈接被稱為URI。從理論上說,URL應該是一個完整的地址,而URI應該是去除協(xié)議、主機和端口后剩余的部分。Heritrix中可能有一定程度的混淆,希望讀者不要對此感到奇怪。至此,已經(jīng)把Heritrix成功的運行起來,并且抓取了一定的內(nèi)容。接下來,看一下它是如何存儲抓取下來的信息的。 Heritrix的鏡象存儲結構由于在前面設置了Writer的類型為MirrorWriter。因此,磁盤上應該留有了所抓取到的網(wǎng)頁的各種鏡象。那么,究竟Heritrix是如何存儲下鏡象信息的呢?打開Eclipse的workspace目錄,進入heritrixProject的工程,里面有一個jobs目錄。進入后
點擊復制文檔內(nèi)容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1