版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、網(wǎng)絡(luò)爬蟲(網(wǎng)絡(luò)爬蟲(Spider)Java實(shí)現(xiàn)原理實(shí)現(xiàn)原理收藏收藏“網(wǎng)絡(luò)蜘蛛”或者說“網(wǎng)絡(luò)爬蟲”,是一種能訪問網(wǎng)站并跟蹤鏈接的程序,通過它,可快速地畫出一個網(wǎng)站所包含的網(wǎng)頁地圖信息。本文主要講述如何使用Java編程來構(gòu)建一個“蜘蛛”,我們會先以一個可復(fù)用的蜘蛛類包裝一個基本的“蜘蛛”,并在示例程序中演示如何創(chuàng)建一個特定的“蜘蛛”來掃描相關(guān)網(wǎng)站并找出死鏈接。Java語言在此非常適合構(gòu)建一個“蜘蛛”程序,其內(nèi)建了對HTTP協(xié)議的支持,通過它
2、可以傳輸大部分的網(wǎng)頁信息;其還內(nèi)建了一個HTML解析器,正是這兩個原因使Java語言成為本文構(gòu)建“蜘蛛”程序的首選。文章后面例1的示例程序,將會掃描一個網(wǎng)站,并尋找死鏈接。使用這個程序時需先輸入一個URL并單擊“Begin”按鈕,程序開始之后,“Begin”按鈕會變成“Cancel”按鈕。在程序掃描網(wǎng)站期間,會在“Cancel”按鈕之下顯示進(jìn)度,且在檢查當(dāng)前網(wǎng)頁時,也會顯示相關(guān)正常鏈接與死鏈接的數(shù)目,死鏈接將顯示在程序底部的滾動文本框中
3、。單擊“Cancel”按鈕會停止掃描過程,之后可以輸入一個新的URL;如果期間沒有單擊“Cancel”,程序?qū)恢边\(yùn)行直到查找完所有網(wǎng)頁,此后,“Cancel”按鈕會再次變回“Begin”,表示程序已停止。下面將演示示例程序是如何與可復(fù)用“Spider”類交互的,示例程序包含在例1的CheckLinks類中,這個類實(shí)現(xiàn)了ISpiderReptable接口,如例2所示,正是通過這個接口,蜘蛛類才能與示例程序相交互。在這個接口中,定義了三
4、個方法:第一個方法是“spiderFoundURL”,它在每次程序定位一個URL時被調(diào)用,如果方法返回true,表示程序應(yīng)繼續(xù)執(zhí)行下去并找出其中的鏈接;第二個方法是“spiderURLErr”,它在每次程序檢測URL導(dǎo)致錯誤時被調(diào)用(如“404頁面未找到”);第三個方法是“spiderFoundEMail”,它在每次發(fā)現(xiàn)電子郵件地址時被調(diào)用。有了這三個方法,Spider類就能把相關(guān)信息反饋給創(chuàng)建它的程序了。在begin方法被調(diào)用后,“蜘
5、蛛”就開始工作了;為允許程序重繪其用戶界面,“蜘蛛”是作為一個單獨(dú)的線程啟動的。點(diǎn)擊“Begin”按鈕會開始這個后臺線程,當(dāng)后臺線程運(yùn)行之后,又會調(diào)用“CheckLinks”類的run方法,而run方法是由Spider對象實(shí)例化時啟動的,如下所示:spider=newSpider(this)spider.clear()base=newURL(url.getText())el方法,或“wkloadWaiting”中已不再剩有URL。這個過
6、程如下:cancel=falsewhile(!getWkloadWaiting().isEmpty()f(inti=0(iprocessURL((URL)list[i])當(dāng)上述代碼遍歷“wkloadWaiting”時,它把每個需處理的URL都傳遞給“processURL”方法,而這個方法才是真正讀取并解析URL中HTML信息的。讀取并解析HTMLJava同時支持訪問URL內(nèi)容及解析HTML,而這正是“processURL”方法要做的。在
7、Java中讀取URL內(nèi)容相對還比較簡單,下面就是“processURL”方法實(shí)現(xiàn)此功能的代碼:URLConnectionconnection=url.openConnection()if((connection.getContentType()!=null)getWkloadProcessed().add(url)log(“Notprocessingbecausecontenttypeis:“connection.getContentT
8、ype())return首先,為每個傳遞進(jìn)來的變量url中存儲的URL構(gòu)造一個“URLConnection”對象,因為網(wǎng)站上會有多種類型的文檔,而“蜘蛛”只對那些包含HTML,尤其是基于文本的文檔感興趣。前述代碼是為了確保文檔內(nèi)容以“text”打頭,如果文檔類型為非文本,會從等待區(qū)移除此URL,并把它添加到已處理區(qū),這也是為了保證不會再次訪問此URL。在對特定URL建立連接之后,接下來就要解析其內(nèi)容了。下面的代碼打開了URL連接,并讀取
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于java的網(wǎng)絡(luò)爬蟲的設(shè)計與實(shí)現(xiàn)
- 爬蟲原理
- 網(wǎng)絡(luò)爬蟲的設(shè)計與實(shí)現(xiàn)
- 并行網(wǎng)絡(luò)爬蟲設(shè)計與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)爬蟲
- 主題網(wǎng)絡(luò)爬蟲的研究與實(shí)現(xiàn).pdf
- 主題網(wǎng)絡(luò)爬蟲的研究和實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)爬蟲系統(tǒng)的研究與實(shí)現(xiàn).pdf
- Inar網(wǎng)絡(luò)爬蟲的設(shè)計與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)蜘蛛,網(wǎng)絡(luò)爬蟲
- 網(wǎng)絡(luò)爬蟲文檔
- 網(wǎng)絡(luò)爬蟲詳解
- 網(wǎng)絡(luò)輿情爬蟲系統(tǒng)的設(shè)計與實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計---網(wǎng)絡(luò)爬蟲的設(shè)計與實(shí)現(xiàn)
- 網(wǎng)絡(luò)爬蟲的設(shè)計與實(shí)現(xiàn)(完整版)
- 面向主題的網(wǎng)絡(luò)爬蟲設(shè)計與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)爬蟲的設(shè)計與實(shí)現(xiàn)畢設(shè)論文
- 基于領(lǐng)域的網(wǎng)絡(luò)爬蟲研究與實(shí)現(xiàn).pdf
- 面向DEEPWEB挖掘網(wǎng)絡(luò)爬蟲設(shè)計和實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)爬蟲外文翻譯---基于網(wǎng)絡(luò)爬蟲的有效url緩存
評論
0/150
提交評論