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

正文內(nèi)容

基于廣度優(yōu)先算法的多線程爬蟲程序的設計與實現(xiàn)畢業(yè)論文(已修改)

2025-07-09 20:21 本頁面
 

【正文】 摘要網(wǎng)絡爬蟲是一種自動搜集互聯(lián)網(wǎng)信息的程序。通過網(wǎng)絡爬蟲不僅能夠為搜索引擎采集網(wǎng)絡信息,而且可以作為定向信息采集器,定向采集某些網(wǎng)站下的特定信息,如招聘信息,租房信息等。本文通過 JAVA 實現(xiàn)了一個基于廣度優(yōu)先算法的多線程爬蟲程序。本論文闡述了網(wǎng)絡爬蟲實現(xiàn)中一些主要問題:為何使用廣度優(yōu)先的爬行策略,以及如何實現(xiàn)廣度優(yōu)先爬行;為何要使用多線程,以及如何實現(xiàn)多線程;系統(tǒng)實現(xiàn)過程中的數(shù)據(jù)存儲;網(wǎng)頁信息解析等。通過實現(xiàn)這一爬蟲程序,可以搜集某一站點的 URLs,并將搜集到的 URLs存入數(shù)據(jù)庫。 【關(guān)鍵字】網(wǎng)絡爬蟲;JAVA;廣度優(yōu)先;多線程。ABSTRACT SPIDER is a program which can auto collect informations from inter. SPIDER can collect data for search engines, also can be a Directional information collector, collects specifically informations from some web sites, such as HR informations, house rent informations.In this paper, use JAVA implements a breadthfirst algorithm multithread SPDIER. This paper expatiates some major problems of SPIDER: why to use breadthfirst crawling strategy, and how to implement breadthfirst crawling。 why to use multithreading, and how to implement multithread。 data structure。 HTML code parse. etc. This SPIDER can collect URLs from one web site, and store URLs into database. 【KEY WORD】SPIDER。 JAVA。 Breadth First Search。 multithreads.目錄第一章 引言 .........................................................1第二章 相關(guān)技術(shù)介紹 .................................................2 JAVA 線程 ......................................................2 線程概述 ..................................................2 JAVA 線程模型 .............................................2 創(chuàng)建線程 ..................................................3 JAVA 中的線程的生命周期 ....................................4 JAVA 線程的結(jié)束方式 ........................................4 多線程同步 ................................................5 URL 消重 .......................................................5 URL 消重的意義 .............................................5 網(wǎng)絡爬蟲 URL 去重儲存庫設計 ................................5 LRU 算法實現(xiàn) URL 消重 .......................................7 URL 類訪問網(wǎng)絡 .................................................8  爬行策略淺析 .................................................8 寬度或深度優(yōu)先搜索策略 .....................................8 聚焦搜索策略 ..............................................9 基于內(nèi)容評價的搜索策略 .....................................9 基于鏈接結(jié)構(gòu)評價的搜索策略 ...............................10 基于鞏固學習的聚焦搜索 ...................................11 基于語境圖的聚焦搜索 .....................................11第三章 系統(tǒng)需求分析及模塊設計 ......................................13 系統(tǒng)需求分析 .................................................13 SPIDER 體系結(jié)構(gòu) ...............................................13 各主要功能模塊(類)設計 .....................................14 SPIDER 工作過程 ...............................................14第四章 系統(tǒng)分析與設計 ..............................................16 SPIDER 構(gòu)造分析 ...............................................16 爬行策略分析 .................................................17 URL 抽取,解析和保存 ..........................................18 URL 抽取 ..................................................18 URL 解析 ..................................................19 URL 保存 ..................................................19第五章 系統(tǒng)實現(xiàn) ....................................................21 實現(xiàn)工具 .....................................................21 爬蟲工作 .....................................................21 URL 解析 ......................................................22 URL 隊列管理 ..................................................24 URL 消重處理 ..............................................24 URL 等待隊列維護 ..........................................26 數(shù)據(jù)庫設計 ...............................................27第六章 系統(tǒng)測試 ....................................................29第七章 結(jié)論 ........................................................32參考文獻 ...........................................................33致謝 ...............................................................34外文資料原文 .......................................................35譯文 ...............................................................51第一章 引言隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡上的信息呈爆炸式增長。這使得人們在網(wǎng)上找到所需的信息越來越困難,這種情況下搜索引擎應運而生。搜索引擎搜集互聯(lián)網(wǎng)上數(shù)以億計的網(wǎng)頁,并為每個詞建立索引。在建立搜索引擎的過程中,搜集網(wǎng)頁是非常重要的一個環(huán)節(jié)。爬蟲程序就是用來搜集網(wǎng)頁的程序。以何種策略偏歷互聯(lián)網(wǎng)上的網(wǎng)頁,也成了爬蟲程序主要的研究方向?,F(xiàn)在比較流行的搜索引擎,比如 google,百度,它們爬蟲程序的技術(shù)內(nèi)幕一般都不公開。目前幾種比較常用的爬蟲實現(xiàn)策略:廣度優(yōu)先的爬蟲程序,Repetitive 爬蟲程序,定義爬行爬蟲程序,深層次爬行爬蟲程序。此外, 還有根據(jù)概率論進行可用 Web 頁的數(shù)量估算, 用于評估互聯(lián)網(wǎng) Web 規(guī)模的抽樣爬蟲程序 。 采用爬行深度、頁面導入鏈接量分析等方法, 限制從程序下載不相關(guān)的 Web 頁的選擇性爬行程序等等。爬蟲程序是一個自動獲取網(wǎng)頁的程序。它為搜索引擎從互聯(lián)網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成部分。爬蟲程序的實現(xiàn)策略,運行效率直接影響搜索引擎的搜索結(jié)果。不同的搜索引擎,會根據(jù)對搜索結(jié)果的不同需求,選擇最合適的爬行策略來搜集互聯(lián)網(wǎng)上的信息。高效,優(yōu)秀的爬蟲程序可以使人們在互聯(lián)網(wǎng)上尋找到更及時,更準確的信息。實現(xiàn)網(wǎng)絡爬蟲的重點和難點有:多線程的實現(xiàn);對臨界資源的分配;遍歷 web圖的遍歷策略選擇和實現(xiàn);存儲數(shù)據(jù)結(jié)構(gòu)的選擇和實現(xiàn)。本文通過 JAVA 語言實現(xiàn)一個基于廣度優(yōu)先偏歷算法的多線程爬蟲程序。通過實現(xiàn)此爬蟲程序可以定點搜集某一站點的 URLs,如果需要搜集其他信息,可以在解析 URLs 的同時,解析獲取相應信息。第二章 相關(guān)技術(shù)介紹 JAVA 線程 線程概述幾乎每種操作系統(tǒng)都支持線程的概念—進程就是在某種程度上相互隔離的,獨立運行的程序。一般來說,這些操作系統(tǒng)都支持多進程操作。所謂多進程,就是讓系統(tǒng)(好像)同時運行多個程序。比如,我在 Microsoft Word 編寫本論文的時候,我還打開了一個 mp3 播放器來播放音樂,偶爾的,我還會再編輯Word 的同時讓我的機器執(zhí)行一個打印任務,而且我還喜歡通過 IE 從網(wǎng)上下載一個 Flash 動畫。對于我來說,這些操作都是同步進行的,我不需要等一首歌曲放完了再來編輯我的論文??雌饋恚鼈兌纪瑫r在我的機器上給我工作。事實的真相是,對于一個 CPU 而言,它在某一個時間點上,只能執(zhí)行一個程序。CPU 不斷的在這些程序之間“跳躍”執(zhí)行。那么,為什么我們看不出任何的中斷現(xiàn)象呢?這是因為,相對于我們的感覺,它的速度實在太快了。我們?nèi)说母兄獣r間可能以秒來計算。而對于 CPU 而言,它的時間是以毫秒來計算的,從我們?nèi)庋劭磥?,它們就是一個連續(xù)的動作。因此,雖然我們看到的都是一些同步的操作,但實際上,對于計算機而言,它在某個時間點上只能執(zhí)行一個程序,除非你的計算機是多 CPU 的。多線程(MultiThread)擴展了多進程(multiProcess)操作的概念,將任務的劃分下降到了程序級別,使得各個程序似乎可以在同一個時間內(nèi)執(zhí)行多個任務。每個任務稱為一個線程,能夠同時運行多個線程的程序稱為多線程程序。多線程和多進程有什么區(qū)別呢?對于進程來說,每個進程都有自己的一組完整的變量,而線程則共享相同的數(shù)據(jù)。 JAVA 線程模型我們知道,計算機程序得以執(zhí)行的三個要素是:CPU,程序代碼,可存取的數(shù)據(jù)。在 JAVA 語言中,多線程的機制是通過虛擬 CPU 來實現(xiàn)的??梢孕蜗蟮睦斫鉃?在一個 JAVA 程序內(nèi)部虛擬了多臺計算機,每臺計算機對應一個線程,有自己的 CPU,可以獲取所需的代碼和數(shù)據(jù),因此能獨立執(zhí)行任務,相互間還可以共用代碼和數(shù)據(jù)。JAVA 的線程是通過 類來實現(xiàn)的,它內(nèi)部實現(xiàn)了虛擬 CPU 的功能,能夠接收和處理傳遞給它的代碼和數(shù)據(jù),并提供了獨立的運行控制功能。我們知道,每個 JAVA 應用程序都至少有一個線程,這就是所謂的主線程。它由 JVM 創(chuàng)建并調(diào)用 JAVA 應用程序的 main()方法。JVM 還通常會創(chuàng)建一些其他的線程,不過,這些線程對我們而言通常都是不可見的。比如,用于自動垃圾收集的線程,對象終止或者其他的 JVM 處理任務相關(guān)的線程。 創(chuàng)建線程 創(chuàng)建線程方式一在 JAVA 中創(chuàng)建線程的一種方式是通過 Thread 來實現(xiàn)的。Thread 有很多個構(gòu)造器來創(chuàng)建一個線程(Thread)實例:Thread()。創(chuàng)建一個線程。Thread(Runnable target)。創(chuàng)建一個線程,并指定一個目標。Thread(Runnable target,String name)。創(chuàng)建一個名為 name 的目標為 targ
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1