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

正文內(nèi)容

網(wǎng)絡(luò)爬蟲(chóng)技術(shù)探究畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-04-05 00:16 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 于從種子 URL 中不斷的解析 URLs,并放到隊(duì)列中。實(shí)現(xiàn)該功能模塊的主要方法是 parseHref()。 網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)前臺(tái) 前臺(tái)搜索 前臺(tái)爬行 顯示搜索結(jié)果 調(diào)用后臺(tái)主程序 網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)后臺(tái) 廣度優(yōu)先隊(duì)列管理 數(shù)據(jù)存儲(chǔ)管理 頁(yè)面讀取提取管理 URL解析管理 URL合法檢測(cè)管理 數(shù)據(jù)庫(kù)連接管理 12 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 URL 合法檢測(cè)管理:該模塊的作用是檢測(cè)解析出來(lái)的 URL 是否合法:即是否是站內(nèi)地址、不能訪問(wèn)的地址、文件地址和已訪問(wèn)地址。 爬行策略分析 因?yàn)楸菊撐膶?shí)現(xiàn)的爬蟲(chóng)程序的初衷是盡可能遍歷某一站點(diǎn)所有的頁(yè)面的 URL以及頁(yè)面內(nèi)容。廣度優(yōu)先算法的實(shí)行理論是覆蓋更多的節(jié)點(diǎn),所以此爬 蟲(chóng)程序選擇了廣度優(yōu)先算法。廣度優(yōu)先算法實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,只需定義一個(gè)數(shù)組類就可以實(shí)現(xiàn)廣度算法。實(shí)現(xiàn)的策略基本是:首先是獲取最初始 URL 所對(duì)應(yīng) HTML 代碼里面所有的 URLs,當(dāng)然都是合法的,非法的 URLs 都會(huì)通過(guò)檢查類剔除掉。然后依次獲取這些 URLs 對(duì)應(yīng)的 HTML 代碼里面的 URLs,當(dāng)這一層所有的 URLs 都下載解析完后,在獲取下一層 URLs 的信息。通過(guò)這種循環(huán)的獲取方式實(shí)現(xiàn)廣度優(yōu)先爬行。如圖 34所示 [6]。 圖 3- 4 爬行策略樹(shù) 形圖 如圖 34,假如 a 代表初始 的 URL, b、 c、 d 為以 a 獲取的 3 個(gè) URLs, e、 f、 g為以 b 獲取的 URLs, h、 i、 j 為以 c 獲取的 URLs, 以此類推。那么這些 URLs 獲取的順序就是 a、 b、 c、 d、 e、 f、 g、 h、 i、 j、 k、 l、 m、 n、 o、 p 這樣一個(gè)順序。當(dāng)獲取到 b 的 URLs 之后,并不會(huì)馬上去解析這些 URLs,而是先解析同 b 在同一層中的c、 d 對(duì)應(yīng)的 URLs。當(dāng)這一層 URLs 全部解析完后,再開(kāi)始下一層 URLs。 可以看到爬蟲(chóng)策略樹(shù)形圖是一個(gè)類似二叉樹(shù)形的樹(shù)形結(jié)構(gòu)。 A B C D E F G H I J K L M N O P 13 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 廣度爬行的優(yōu)點(diǎn)是 : 對(duì)數(shù)據(jù)抓取更容易控制些。對(duì) 服務(wù)器的負(fù)載相應(yīng)也明顯減輕了許多 。 爬蟲(chóng)的分布式處理使的速度明顯提高?,F(xiàn)實(shí)起來(lái)也比其他的算法來(lái)的容易的。 廣度爬行的缺點(diǎn)是 : 解析 URLs 效率不是太高。 廣度優(yōu)先算法的等待隊(duì)列設(shè)計(jì)如圖 35 所示。 圖 3- 5 URL等待隊(duì)列 圖 35 列舉了不同時(shí)間段時(shí), URL 等待隊(duì)列的存儲(chǔ)狀態(tài)。第一個(gè)方框是將初始 A AB C D B C C D B A E F G E F G H I J K L M O N P 14 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 URL: a 加入到等待隊(duì)列。第二個(gè)方框?yàn)椋馕?a 對(duì)應(yīng) HTML 獲取 URLs: bcd,同時(shí)刪除 a。第三個(gè)方框?yàn)?,解?b 對(duì)應(yīng) HTML 獲取 URLs: efg,同時(shí)刪除 URL: b。第四個(gè)方框?yàn)?,解?e 對(duì)應(yīng) HTML 獲取 URLs: nop,并刪除 e。通過(guò)這樣的存儲(chǔ)方法實(shí)現(xiàn)廣度爬行算法 [7]。 爬蟲(chóng)技術(shù)分析 IDNS 解析擴(kuò)展 將 網(wǎng)頁(yè) 下載之 前,首先要經(jīng)過(guò)將 URL 地址解析成 IP 地址供 socket 建立連接使用。 DNS 的解析過(guò)程的具體步驟如下 : ( 1) DNS 客戶機(jī)提出域名解析請(qǐng)求,并將該請(qǐng)求發(fā)送給本地的 DNS 服務(wù)器 。 ( 2) 本地的 DNS 服務(wù)器收到請(qǐng)求后,先查詢本地的 DNS 緩存,如果有該記錄項(xiàng),則本地的 DNS 服務(wù)器就直接把查詢的結(jié)果返回 ; ( 3) 如果本地的 DNS 緩存中沒(méi)有該紀(jì) 錄,則本地 DNS 服務(wù)器就直接把請(qǐng)求發(fā)給根 DNS 服務(wù)器 , 然后根 DNS 服務(wù)器再返回給本地 DNS 服務(wù)器一個(gè)所查詢域 (根的子域 )的主 DNS 服務(wù)器的地址 ; ( 4) 本地服務(wù)器再向上一步返回的 DNS 服務(wù)器發(fā)送請(qǐng)求,接收請(qǐng)求的服務(wù)器查詢自己的緩存,如果沒(méi)有該紀(jì)錄,則返回相關(guān)的下級(jí)的 DNS 服務(wù)器的地址 ; ( 5) 重復(fù)第四步,直到找到正確的紀(jì)錄 ; ( 6) 本地 DNS 服務(wù)器把返回的結(jié)果保存到緩存,以備下一次使用,同時(shí)將結(jié)果返回給客戶機(jī)。 并行存儲(chǔ) 單一線程下載一個(gè)網(wǎng)頁(yè)通常需要幾秒鐘,為了充分利用網(wǎng)絡(luò)帶寬和系統(tǒng)資源,網(wǎng)絡(luò)爬 蟲(chóng)需要打開(kāi)許多 Socket 以便在同一時(shí)間連接到許多不同的 HTTP 服務(wù)器。有兩種方法來(lái)管理多個(gè)并發(fā)連接 : 使用多線程和使用非阻塞 Socket 與事件處理程序。 15 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 由于網(wǎng)絡(luò)爬蟲(chóng)的性能受網(wǎng)絡(luò)和磁盤(pán)所限,多 CPU的機(jī)器一般用處不是很大 [8]。 ( 1) 多線程 為了最大限度地提高客戶端應(yīng)用程序的響應(yīng)能力,可以使用多線程。多線程可以大大提高應(yīng)用程序的可用性和性能。地址解析后,每個(gè)邏輯線程將創(chuàng)建一個(gè)客戶端 socket,連接 socket 到服務(wù)器的 HTTP 服務(wù)上,發(fā)送 HTTP 請(qǐng)求頭,然后讀取soeket(調(diào)用 recv 函數(shù) ),直到?jīng)]有更 多的字符可用,最后關(guān)閉 Socket。最簡(jiǎn)單的方法是使用阻塞系統(tǒng)調(diào)用,它暫停客戶端進(jìn)程,直到請(qǐng)求完成,數(shù)據(jù)在用戶指定的緩沖區(qū)可用。當(dāng)一個(gè)線程掛起等待一個(gè)連接發(fā)送或接收完成時(shí),其他線程可以執(zhí)行。線程不是為每個(gè)請(qǐng)求動(dòng)態(tài)生成的,而是提前分配的固定的線程數(shù)。這些線程使用共享并行的工作隊(duì)列來(lái)得到要獲取網(wǎng)頁(yè)的 URL。每個(gè)線程管理自己的控制狀態(tài)和堆棧,但共享數(shù)據(jù)域。因此,一些實(shí)現(xiàn)傾向于使用進(jìn)程而不是線程,這樣當(dāng)一個(gè)進(jìn)程崩潰時(shí),它不會(huì)破壞其他進(jìn)程的狀態(tài)。并發(fā)線程 /進(jìn)程有兩個(gè)問(wèn)題。首先,共享的數(shù)據(jù)結(jié)構(gòu)將導(dǎo)致一些性能的損失,因?yàn)?線程不能同時(shí)訪問(wèn)它們。第二,當(dāng)線程 或 進(jìn)程完成網(wǎng)頁(yè)抓取,并開(kāi)始修改文件存放庫(kù)和索引時(shí),他們可能會(huì)導(dǎo)致大量的交叉,隨機(jī)在磁盤(pán)上讀寫(xiě),從而降低磁盤(pán)的查詢時(shí)間。第二個(gè)性能問(wèn)題可能是嚴(yán)重的。為了防止上述問(wèn)題,眾多的抓取線程 或 進(jìn)程必須使用一個(gè)共享的內(nèi)存緩沖,信號(hào)量和互斥鎖?;コ庖约坝纱诵纬傻拈g接順序化可能成為系統(tǒng)的嚴(yán)重瓶頸 [9]。 ( 2) 非阻塞 Socket 和事件處理 另一種辦法是使用非阻塞 Socket。使用非阻塞 Socket,一個(gè)連接,發(fā)送或接收請(qǐng)求都不會(huì)阻塞當(dāng)前線程,而會(huì)立刻返回。 系統(tǒng)每隔一段時(shí)間對(duì)他們實(shí)行一次輪詢 ,以判斷是否可以進(jìn)行讀寫(xiě)操作。特別是,非阻塞 Socket 提供了 Se1ect()系統(tǒng)調(diào)用,它可以讓?xiě)?yīng)用程序暫停,等待更多的數(shù)據(jù)可以讀取或向 Socket 寫(xiě)入,直到預(yù)設(shè)計(jì)時(shí)器超時(shí)。 Select()事實(shí)上可以同時(shí)監(jiān)控幾個(gè) Socket,暫停請(qǐng)求進(jìn)程,直到有 Socket 可以讀或?qū)憽?Select()允許進(jìn)程只是內(nèi)核等待多個(gè)事件中的任一個(gè)發(fā)生,并僅在一個(gè)或多個(gè)事件發(fā)生或經(jīng)過(guò)某指定的時(shí)間后才喚醒進(jìn)程。 16 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 中文分詞技術(shù) 中文自動(dòng)分詞是網(wǎng)頁(yè)分析的前提。文檔由被稱作特征項(xiàng)的索引詞組成,網(wǎng)頁(yè)分析是將一個(gè)文檔表示為特征項(xiàng)的 過(guò)程。在提取特征項(xiàng)時(shí),中文信息文本中,詞與詞之間沒(méi)有天然的分隔符,中文詞匯大多是由兩個(gè)或兩個(gè)以上的漢字組成的,并且語(yǔ)句是連續(xù)書(shū)寫(xiě)的。這就要求在對(duì)中文文本進(jìn)行自動(dòng)分析前,先將整句切割成小的詞匯單元,即中文分詞 (或中文切詞 )。自動(dòng)中文分詞的基本方法有基于字符串匹配的分詞方法和基于統(tǒng)計(jì)的分詞方法。基于字符串的分詞方法又稱為機(jī)械分詞方法,它是按照一定的策略將待分析的漢字符串與一個(gè)已知的詞典中的詞條進(jìn)行匹配,若在詞典中找到某個(gè)字符串,則匹配成功。串匹配分詞方法可以分為正向匹配和逆向匹配 ; 按照不同長(zhǎng)度優(yōu)先匹配的情況,可 以分為最大或最長(zhǎng)匹配,和最小或最短匹配 。按照是否中文自動(dòng)分詞是中文搜索引擎的關(guān)鍵環(huán)節(jié),對(duì)搜索引擎系統(tǒng)來(lái)說(shuō),分詞的準(zhǔn)與詞性標(biāo)注過(guò)程相結(jié)合,又可以分為單純分詞方法和分詞與標(biāo)注相結(jié)合的一體化方法。另外一種是基于統(tǒng)計(jì)的分詞方法,它的基本原理是根據(jù)字符串在語(yǔ)料庫(kù)中出現(xiàn)的統(tǒng)計(jì)頻率來(lái)決定其是否構(gòu)成詞。從形式上看,詞是穩(wěn)定的字的組合,因此 在上下文 如果相鄰的字出現(xiàn)的次數(shù)越多,就越有可能構(gòu)成一個(gè)詞。因此字與字相鄰共現(xiàn)的頻率或概率能夠較好的反映詞的可信度??梢詫?duì)語(yǔ)料中相鄰共現(xiàn)的各個(gè)字的組合的頻度進(jìn)行統(tǒng)計(jì),計(jì)算它們的互現(xiàn)信息,互信 息量體現(xiàn)了漢字之間結(jié)合關(guān)系的緊密程度,當(dāng)緊密程度高于某一個(gè)閉值時(shí),便可認(rèn)為此字組可能構(gòu)成了一個(gè)詞。這種方法只需對(duì)語(yǔ)料中的詞組頻度進(jìn)行統(tǒng)計(jì),不需要切分詞典,因而又叫做無(wú)詞典分詞法或統(tǒng)計(jì)取詞方法。但這種方法也有一定的局限性,會(huì)經(jīng)常抽出一些共現(xiàn)頻度高、但并不是詞的常用字組,并且對(duì)常用詞的識(shí)別精度差,時(shí)空開(kāi)銷(xiāo)大。實(shí)際應(yīng)用的統(tǒng)計(jì)分詞系統(tǒng)都要使用一部基本的分詞詞典 (常用詞詞典 )進(jìn)行串匹配分詞,同時(shí)使用統(tǒng)計(jì)方法識(shí)別一些新的詞,即將串頻統(tǒng)計(jì)和串匹配結(jié)合起來(lái),既發(fā)揮匹配分詞切分速度快、效率高的特點(diǎn),又利用了無(wú)詞典分詞結(jié)合上下 文識(shí)別生詞、自動(dòng)消除歧義的優(yōu)點(diǎn)。詞匯切分算法最重要的指標(biāo)是準(zhǔn)確,在兼顧準(zhǔn)確性的情況下也要考慮時(shí)間復(fù)雜度。 17 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 數(shù)據(jù)庫(kù)設(shè)計(jì) 對(duì)于 SQLSERVER 數(shù)據(jù)庫(kù)的設(shè)計(jì)。我建立了 1 個(gè)表 , 即 webinfo, 分別有 id, url,title, body 字段,分別用于存放行數(shù),地址,標(biāo)題,以及網(wǎng)頁(yè)內(nèi)的郵箱地址。 JAVA程序和數(shù)據(jù)之間的通信是通過(guò) JDBC 實(shí)現(xiàn)的。 URL 信息存儲(chǔ)表結(jié)構(gòu)如表 36 所示。 表 36 webinfo表結(jié)構(gòu) 字段名 數(shù)據(jù)類型 長(zhǎng)度 Id Int 4 url String 50 Title Varchar 8000 Body Text 1000 本章小結(jié) 此章節(jié)介紹的是如何通過(guò)一個(gè)給定的 URL 抓取整個(gè)網(wǎng)站內(nèi)容的描述過(guò)程,其中頁(yè)面中的內(nèi)容解析是最重要的核心,通過(guò)對(duì) URL 解析過(guò)程的分析,使我更加深入的認(rèn)識(shí)到了網(wǎng)絡(luò)爬蟲(chóng)的工作原理,為鞏固 JAVA 的學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ)。 18 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 4 系統(tǒng)實(shí)現(xiàn) 系統(tǒng)實(shí)現(xiàn)是軟件項(xiàng)目開(kāi)發(fā)過(guò)程中的主要部分,在系統(tǒng)實(shí)現(xiàn)中要有簡(jiǎn)潔、美觀、可讀性好、整體統(tǒng)一等準(zhǔn)則。 系統(tǒng)功能簡(jiǎn)介 此爬蟲(chóng)程序主要分為三個(gè)部分:任務(wù)執(zhí)行端,任務(wù)前臺(tái)界面,數(shù)據(jù)服務(wù)端。一個(gè) SPIDER 任務(wù)執(zhí)行端關(guān)聯(lián)一個(gè)站點(diǎn) ,下載一個(gè)基于 URL 鏈接的頁(yè)面 ,并進(jìn)行 Web 頁(yè)面解析 ,得到站內(nèi) URL 和發(fā)現(xiàn)新站點(diǎn) URL。 SPIDER 的任務(wù)執(zhí)行需要維持一個(gè)URL 隊(duì)列 : 任務(wù)執(zhí)行端的 URL 隊(duì)列中存儲(chǔ)了站內(nèi) URL。 SPIDER 要獲取的對(duì)象是存在于網(wǎng)絡(luò)上數(shù)以億計(jì)的網(wǎng)頁(yè),這些網(wǎng)頁(yè)以超鏈接形式互相聯(lián)系在一起,每一網(wǎng)頁(yè)對(duì)應(yīng)一個(gè)超鏈接,也稱統(tǒng)一資源定位符 (URL)。我們可以把網(wǎng)絡(luò)看做一個(gè)圖 M(V,E),網(wǎng)絡(luò)中的網(wǎng)頁(yè)構(gòu)成節(jié)點(diǎn)集 V,他們之間的鏈接構(gòu)成邊集 E, SPIDER 正是從某一節(jié)點(diǎn)開(kāi)始,沿著邊,遍歷圖 M, 每訪問(wèn)到圖中 一個(gè)節(jié)點(diǎn)Vi,就進(jìn)行一定的處理。 為了達(dá)到上述目的,一個(gè) SPIDER 必須被設(shè)計(jì)成多線程的, A 個(gè)線程并發(fā)地在網(wǎng)絡(luò)上協(xié)同工作,才有可能在盡可能短的時(shí)間內(nèi)遍歷完網(wǎng)絡(luò)中的網(wǎng)頁(yè)。但網(wǎng)頁(yè)數(shù)目是如此之大,如果任 SPIDER 程序無(wú)窮地搜索下去,那么程序幾乎不能終止。所以我們限制 SPIDER 每次工作只訪問(wèn)一個(gè)站點(diǎn)。一個(gè)再大型的站點(diǎn),其中的網(wǎng)頁(yè)數(shù)目也是有限的,因此 SPIDER 程序能在有限的時(shí)間內(nèi)結(jié)束。 當(dāng) SPIDER 程序訪問(wèn)到一個(gè)網(wǎng)頁(yè),必須進(jìn)行以下幾項(xiàng)基本處理:抽取網(wǎng)頁(yè)中包含的文本;抽取網(wǎng)頁(yè)中包含的 URL,并將其區(qū)分為網(wǎng)站內(nèi) URL 或網(wǎng)站外 URL。 在這些 URL 隊(duì)列上有大量的操作 ,包括 URL 查找、 URL 插入、 URL 狀態(tài)更新等。如果 SPIDER 以 300頁(yè) 每 秒的速度下載 Web 頁(yè)面 ,平均將會(huì)產(chǎn)生 2021多個(gè) URL,因此簡(jiǎn)單的采用內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)這些 URL 隊(duì)列有一定的問(wèn)題 ,系統(tǒng)沒(méi)有足夠的內(nèi)存空間 ; 而采用直接持久化到數(shù)據(jù)庫(kù) ,則需要大量的數(shù)據(jù)庫(kù)連接、查詢等操作 ,系統(tǒng)效率會(huì)明顯下降。如果采用 URL 壓縮的辦法 ,盡管在一定程度上可以平衡空間和時(shí) 19 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 間的矛盾 ,但仍然不適用于大 規(guī)模數(shù)據(jù)采集 的 SPIDER。任務(wù)前臺(tái)界面主要工作是將用戶輸入的 URL 通過(guò) Servlet 傳遞到任務(wù)端。數(shù)據(jù)服務(wù)端負(fù)責(zé)存儲(chǔ)解析好的數(shù)據(jù)。如圖 41 所示 [10]。 圖 41 Spider體系結(jié)構(gòu) HTTP協(xié)議 INTERNET 頁(yè)面讀取 頁(yè)面解析 申請(qǐng) URL URL管理 任務(wù)執(zhí)行端 數(shù)據(jù)庫(kù) 數(shù)據(jù)服務(wù)端 JDBC管理 任務(wù)前臺(tái)界面 Servlet URL傳
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1