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

正文內(nèi)容

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

2025-07-15 20:21 上一頁面

下一頁面
 

【正文】 主機(jī), host 的組成可知, host 的格式一般為[站內(nèi)分].站點(diǎn)類型串只有[ |edu|gov|| 國家域名]幾種類型,所以我們?nèi)≌军c(diǎn)類型各異串前面的串,即站點(diǎn)標(biāo)志串作匹配,超鏈 URL的 host 中是否包含此串,為超鏈?zhǔn)欠裾緝?nèi)的判斷標(biāo)準(zhǔn). URL 保存因?yàn)榈却?URLs 的數(shù)目非常多,如果全部采用 List 來存儲非常的占用內(nèi)存空間。圖 表示了 URL 等待隊(duì)列的結(jié)構(gòu)。我采用了第二種方法:public class SpiderWorker implements Runnable {在這個(gè)類中必須要實(shí)現(xiàn)重寫 run()這個(gè)方法。所以我在這里寫了一個(gè)循環(huán):s = null。具體方法是調(diào)用 getHtml(String sourse_url)這個(gè)方法:HttpURLConnection connection = null。url = new URL(sourse_url)。in = new InputStreamReader(())。}return ()。對于一個(gè) HTML 代碼,我尋找其中的 href=字符串,然后記錄它的下表i。我們先檢索 href=標(biāo)記,然后判斷出第 i+1 位為一個(gè)雙引號,所以我們可以截取 i+1 位到第 2 個(gè)雙引號的位置。這步以后原字符串又被截取為“ target=”開始,我們可以繼續(xù)檢索 href=標(biāo)簽。public void getHref_UrlsList(String html_text, String fromURL,UrlQueueManager urlQueueManager, int biaoji) {// 站內(nèi) URL隊(duì)列ListString siteInsideUrls = new ArrayListString()。// 當(dāng) href= 后以 開頭的情況if (39。url = addURLhost(fromURL, url)。}在每個(gè) URL 被截取出來之后,需要判斷這些 URL 是相對地址,還是絕對地址。可以判斷它為絕對地址。下面是一段實(shí)行代碼。一般情況下同一網(wǎng)站內(nèi)的 URL 的 host 名因該是一致的。// if ((.)) {String str = (0,(.))。}}如果為站內(nèi)URL則加入到緩存隊(duì)列。這個(gè) hash 碼的長度相對較小,可以節(jié)省內(nèi)存開銷。這樣就算 URL 數(shù)過大,也可以盡量避免重復(fù)下載 URL。private final Lock lock = new ReentrantLock()。}Overridepublic V get(Object key) {try {()。return (key, value)。也許是同一個(gè) URL,但是有些在最后一位接續(xù)/符號,而有些則沒有接續(xù)。}boolean b = ((url))。往里面加入U(xiǎn)RLs。當(dāng)加入 URL 緩存太長時(shí),調(diào)用下面的方法,將緩存區(qū)的內(nèi)容加入到數(shù)據(jù)庫。不斷重復(fù)這個(gè)操作,直到存入緩存被清空。while ((0).size() 0) {String url = (String)(0).get(0)。)。)。具體的實(shí)現(xiàn)方法是:從數(shù)據(jù)庫里搜索前 25 條數(shù)據(jù),因?yàn)閿?shù)據(jù)庫添加數(shù)據(jù)時(shí)是順序往下壓入的。下面是具體實(shí)現(xiàn)的 JAVA 代碼:public synchronized void waitQueueAdd() {String sql = SELECT * FROM middlequeue LIMIT 25。res = (sql)。我建立了 2 個(gè)表,分別為 middlequeue 和databasequeue。JAVA 程序和數(shù)據(jù)之間的通信是通過 JDBC 實(shí)現(xiàn)的。// 建立到MySQL的連接conn = (jdbc: root, root)。然后用爬蟲程序去運(yùn)行。我分析 HTML 代碼。這個(gè) URL 為 ico 文件,是不可能被當(dāng)作 HTML 解析的。所以因該被過濾掉。根據(jù)測試結(jié)果可以得知爬蟲程序能夠正確解析出頁面 URLs。第七章 結(jié)論從課題著手到現(xiàn)在論文完成,經(jīng)歷了 3 個(gè)月的時(shí)間。這篇論文實(shí)現(xiàn)了一個(gè)基于廣度優(yōu)先策略的多線程爬蟲程序,可以搜集站內(nèi)URLs。所以在以后的時(shí)間,我將繼續(xù)研究網(wǎng)絡(luò)爬蟲技術(shù)。感謝李廣鎮(zhèn)同學(xué),戴國強(qiáng)同學(xué),潘秀銀同學(xué)在程序具體實(shí)施過程中給我提供了寶貴的意見和提議。希望在這一課題上達(dá)到另一個(gè)高度。對于網(wǎng)絡(luò)爬蟲這個(gè)龐大的知識體系來說,這篇論文實(shí)現(xiàn)的功能只能算一些皮毛。對網(wǎng)絡(luò)爬蟲中比較主流的技術(shù)都有了更深的理解。圖 圖 為控制臺打印出來的信息。第三個(gè)被檢索到的 href 標(biāo)簽為:這是一段很標(biāo)準(zhǔn)的 URL,它的 host 為 并且可以得到 HTML 代碼。這是程序設(shè)計(jì)上的不足。程序?qū)⑵滢D(zhuǎn)化為了,絕對地址。下面是從數(shù)據(jù)庫里截圖的 2 段爬行結(jié)果。}return conn。public static Connection conn() {Connection conn = null。Middlequeue 用于 URL 等待隊(duì)列的主存儲部分。}(delete from middlequeue limit 25)。ResultSet res = null。檢索存入數(shù)據(jù)庫最上端的 25 條數(shù)據(jù),然后依次將其加入到取出緩存區(qū)。}當(dāng)取出緩存區(qū)空以后,需要將數(shù)據(jù)庫的內(nèi)容加入到緩存區(qū)。(insert into databasequeue (url) values(39。(insert into middlequeue (url) values(39。public synchronized void waitQueueDecrease() {try {Statement stmt = null。調(diào)用 waitQueueDecrease()這個(gè)函數(shù),將存入緩存里的數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)庫。2 段基于內(nèi)存的 URL 緩存區(qū),和一個(gè)基于數(shù)據(jù)庫的儲存區(qū)。return b。所以我們必須先除去后面的/符號,再進(jìn)行 URL 去重判斷。}}}有了這個(gè) map 以后,我就會(huì)用 URL 到里面去碰撞。} finally {()。 = maxCapacity。private final int maxCapacity。然后這個(gè) URL 消重隊(duì)列的維護(hù)是同時(shí) LRULinkedHashMap 來實(shí)現(xiàn)的。因?yàn)閁RLs 的數(shù)量非常巨大,為了節(jié)省內(nèi)存空間。.39。下面的代碼是 host 的情況。// 如果 url中包含以下 字符串,則不加入隊(duì)列if (().contains(.css)|| ().contains(.rar) || ()|| (.zip) || (javascript)) {return false。很多 URL 它們指向的文件不是 HTML 文件,而是一些 CSS 文件,或者 RAR 包文件,或者只是接續(xù)“”符號,代表只是調(diào)用一段 javascript 代碼。我們需要將其轉(zhuǎn)化為絕對地址。}}haveHref = (href)。 == (0)) {html_text = (1)。// HTML中是否還含有href 標(biāo)簽boolean haveHref = (href)。我們就去檢索空格和標(biāo)簽,以下標(biāo)較小的字符作為截取 URL 的結(jié)束標(biāo)記。當(dāng)完成這一步操作后,原字符串被截取從“ class=”開始。截取過后的 href 標(biāo)記就剔除它與它前面的部分,以便而后的操作可以繼續(xù)檢索 href 標(biāo)記,直到正個(gè) HTML 代碼中所有的 href 標(biāo)記都被解析過后,操作終止。當(dāng)?shù)玫?HTML 代碼以后,程序就會(huì)調(diào)用 Url_Parse 這個(gè)類里面的方法來解析HTML。String c。()。BufferedReader br = null。}如果沒有得到 URL 就繼續(xù)向 URL 等待隊(duì)列申請。在這個(gè)循環(huán)里,首先會(huì)向 URL 等待隊(duì)列里請求一個(gè) URL。JAVA 程序的編寫工具是 ;數(shù)據(jù)庫是 MYSQL 5 。URL 等待隊(duì)列設(shè)計(jì)成三段式:第一段為一個(gè) List,用來加入新得到的 URL。所以我們需要過濾掉這些 URLs。所以需要判斷 URL 為絕對地址,還是相對地址。通過這種方法,我們獲取網(wǎng)頁中大部分的 URLs。我們需要獲取 HTML 代碼中的 URLs,就可以通過尋找 href 標(biāo)簽來達(dá)到目的。第四個(gè)方框?yàn)?,解?e 對應(yīng) HTML 獲取URLs:nop,并刪除 e。圖 圖 列舉了不同時(shí)間段時(shí),URL 等待隊(duì)列的存儲狀態(tài)。那么這些 URLs 獲取的順序就是 abcdefghijklmnop這樣一個(gè)順序。實(shí)現(xiàn)的策略是:先獲取初始 URL 對應(yīng) HTML 代碼里所有的 URLs。而線程 2 同時(shí)也會(huì)下載它獲取到的 URL 2 對應(yīng)的 HTML 代碼,解析出 URLs 加入到等待隊(duì)列中。每個(gè) SPIDER 線程都會(huì)獨(dú)立的去完成獲取 URLs 的任務(wù),并將獲取到的URLs 加入一個(gè)公共的 URL 等待隊(duì)列中。本系統(tǒng)中使用了非遞歸的程序設(shè)計(jì)方法。再判斷這些 URL 是否已經(jīng)被下載到,如果沒有則加入到 URL 等待隊(duì)列。 SPIDER 工作過程①將給定的初始 URL 加入到 URL 等待隊(duì)列。SPIDERManager 類:該類用于控制 SPIDERWorker 線程。每一個(gè) SPIDER 任務(wù)執(zhí)行端關(guān)聯(lián)一個(gè)站點(diǎn),一個(gè)線程下載一個(gè)基于 URL 鏈接的頁面, 并進(jìn)行 Web 頁面解析, 得到站內(nèi) URL 和發(fā)現(xiàn)新站點(diǎn) URL 另外,將URL 隊(duì)列持久化到數(shù)據(jù)庫, 因此在 SPIDER 任務(wù)執(zhí)行端以外 Down 掉后, 能夠斷點(diǎn)續(xù)傳.SPIDER 客戶端線程間的協(xié)調(diào)通信采用 Java 的線程同步技術(shù) synchronized,在數(shù)據(jù)服務(wù)端中對 URL 進(jìn)行緩存提高了系統(tǒng)處理速度. SPIDER 的任務(wù)執(zhí)行和任務(wù)調(diào)度端都需要維持一個(gè) URL 隊(duì)列: 任務(wù)執(zhí)行端的 URL 隊(duì)列中存儲了站內(nèi)URL。所以我們限制 SPIDER 每次工作只訪問一個(gè)站點(diǎn)。Authority 方法的搜索方法,Authority 表示一個(gè)頁面被其它頁面引用的數(shù)量, 即該頁面的入度值. Hub 表示一個(gè) Web 頁面指向其它頁面的數(shù)量, 即該頁面的出度值. 算法如下: 將查詢 q 提交給傳統(tǒng)的基于關(guān)鍵字匹配的搜索引擎. 搜索引擎返回很多網(wǎng)頁, 從中取前 n 個(gè)網(wǎng)頁作為根集, 用 S S 中加入被 S 引用的網(wǎng)頁和引用 S 的網(wǎng)頁將 S 擴(kuò)展成一個(gè)更大的集合 T 中的 Hub 網(wǎng)頁為頂點(diǎn)集 V l, 以權(quán)威網(wǎng)頁為頂點(diǎn)集 V 2,V1 中的網(wǎng)頁到 V 2 中的網(wǎng)頁的超鏈接為邊集 E , 形成一個(gè)二分有向圖 S G = (V 1,V 2, E ).對 V 1 中的任一個(gè)頂點(diǎn) v , 用 H (v ) 表示網(wǎng)頁 v 的 Hub 值, 對 V 2 中的頂點(diǎn) u, 用 A (u) 表示網(wǎng)頁的 Authority 值. 開始時(shí) H (v ) = A (u) = 1, 對 u 執(zhí)行公式 (1) 來修改它的 A (u) , 對 v 執(zhí)行公式(2) 來修改它的 H (v ) , 然后規(guī)范化 A (u) , H (v ) , 如此不斷的重復(fù)計(jì)算上述運(yùn)算, 直到 A (u) , H (v ) 收斂.      A (u) = Σ v: (v , u) ∈EH (v ) (1)    H (v ) = Σ v: (v, u) ∈EA (v ) (2)式(1) 反映了若一個(gè)網(wǎng)頁由很多好的 Hub 指向, 則其權(quán)威值會(huì)相應(yīng)增加( 即權(quán)威值增加為所有指向它的網(wǎng)頁的現(xiàn)有 Hub 值之和). 式(2) 反映了若一個(gè)網(wǎng)頁指向許多好的權(quán)威頁, 則 Hub 值也會(huì)相應(yīng)增加( 即 Hub 值增加為該網(wǎng)頁鏈接的所有網(wǎng)頁的權(quán)威值之和).雖然基于鏈接結(jié)構(gòu)價(jià)的搜索考慮了鏈接的結(jié)構(gòu)和頁面之間的引用關(guān)系, 但忽略了頁面與主題的相關(guān)性, 在某些情況下 , 會(huì)出現(xiàn)搜索偏離主題的問題. 另外, 搜索過程中需要重復(fù)計(jì)算 PageRank 值或 Authority 以及 Hub 權(quán)重, 計(jì)算復(fù)雜度隨頁面和鏈接數(shù)量的增長呈指數(shù)級增長[ 6 ]. 基于鞏固學(xué)習(xí)的聚焦搜索近年來對 Web 信息資源分布的研究表明很多類型相同的網(wǎng)站在構(gòu)建方式上, 主題相同的網(wǎng)頁在組織方式上都存在著一定的相似性, 有的學(xué)者就考慮將鞏固學(xué)習(xí)引入網(wǎng)絡(luò)爬蟲的訓(xùn)練過程中, 從這些相似性獲取一些“經(jīng)驗(yàn)”, 而這些經(jīng)驗(yàn)信息在搜索距相關(guān)頁面集較遠(yuǎn)的地方往往能獲得較好的回報(bào), 而前兩種策略在這種, 把網(wǎng)絡(luò)爬蟲經(jīng)過若干無關(guān)頁面的訪問之后才能獲得的主題相關(guān)頁面稱為未來回報(bào), 對未來回報(bào)的預(yù)測值稱為未來回報(bào)價(jià)值, 用 Q 價(jià)值表示. 這種方法的核心就是學(xué)習(xí)如何計(jì)算鏈接的 Q 價(jià)值, 根據(jù)未來回報(bào)價(jià)值確定正確的搜索方向. 目前這類搜索策略不足之處在于學(xué)習(xí)效率低的問題, 而且在訓(xùn)練過程中增加了用戶的負(fù)擔(dān). 基于語境圖的聚焦搜索基于鞏固學(xué)習(xí)的網(wǎng)絡(luò)爬蟲通過計(jì)算鏈接的 Q 價(jià)值可以確定搜索方向 , 但它卻無法估計(jì)距離目標(biāo)頁面的遠(yuǎn)近. 為此, Diligent 等提出了基于“語境圖”的搜索策略, 它通過構(gòu)建典型頁面的 web“語境圖”來估計(jì)離目標(biāo)頁面的距離 , 距離較近的頁面較早得到訪問[ 7 ].基于“語境圖”的搜索策略需要借助已有的通用搜索引擎構(gòu)建“語境圖”, 而搜索引擎的檢索結(jié)果并非一定代表真實(shí)的 web 結(jié)構(gòu), 因而這種方式也具有局限性.第三章 系統(tǒng)需求分析及模塊設(shè)計(jì) 系統(tǒng)需求分析SPIDER 要獲取的對象是存在于網(wǎng)絡(luò)上數(shù)以億計(jì)的網(wǎng)頁,這些網(wǎng)頁以超鏈
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1