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

正文內(nèi)容

基于多線程的網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(留存版)

2025-09-13 14:58上一頁面

下一頁面
  

【正文】 能,直接決定了搜索引擎的未來。 本課題的目標(biāo)是研究并實(shí)現(xiàn)一個(gè) 實(shí)現(xiàn)簡單的可在后臺(tái)自動(dòng)運(yùn)行的爬蟲程序。網(wǎng)絡(luò)蜘蛛是通過網(wǎng)頁的鏈接地址來尋找網(wǎng)頁,從網(wǎng)站的一個(gè)頁面(通常是首頁)開始,讀取網(wǎng)頁的內(nèi)容,找到在網(wǎng)頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個(gè)網(wǎng)頁,這樣一直循環(huán)下去,直到把這個(gè)網(wǎng)站所有的網(wǎng)頁都抓取完為止。它為搜索引擎從 Inter 上下載網(wǎng)頁。剛開始 它只用來統(tǒng)計(jì)互聯(lián)網(wǎng)上的服務(wù)器數(shù)量,后來則發(fā)展為能夠檢索網(wǎng)站域名。網(wǎng)絡(luò)爬蟲是搜索引擎的重要組成部分。雖然大的 Flash 效果看上去很好,外觀看著也很漂亮,但可惜搜索引擎看不到,無法讀取任何內(nèi)容。比 較好的情況是邏輯結(jié)構(gòu)與前面的樹型物理結(jié)構(gòu)相吻合。 靈活: HTTP 允許傳輸任意類型的數(shù)據(jù)對(duì)象。這一方法可以在不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息。 其中 GET 和 POST 方法是常用的兩種請(qǐng)求方法。線程是程序中一個(gè)單一的順序控制流程 .在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作 ,稱為多線程。 JAVA 的線程是通過 類來實(shí)現(xiàn)的,它內(nèi)部實(shí)現(xiàn)了虛擬CPU 的功能,能夠接收和處理傳遞給它的代碼和數(shù)據(jù),并提供了獨(dú)立的運(yùn)行控制功能。 使用 start()方法,線程進(jìn)入 Runnable 狀態(tài),它將線程調(diào)度器注冊(cè)這個(gè)線程。 當(dāng)同時(shí)運(yùn)行的相互獨(dú)立的線程需要共享數(shù)據(jù)并且需要考慮其他線程的狀態(tài)時(shí),就需要使用一套機(jī)制使得這些線程同步,避免在爭用資源時(shí)發(fā)生沖突,甚至發(fā)生死鎖。而 IP 是給因特網(wǎng)的每一臺(tái)電腦規(guī)定一個(gè)地址。 本課題 將 會(huì) 采用該種 協(xié)議為基礎(chǔ),進(jìn)行編程。一般在服務(wù)器端編程中,當(dāng)獲得連接時(shí),需要開啟專門的線程處理該連接,每個(gè)連接都由獨(dú)立的線程實(shí)現(xiàn)。 在 Java 語言中,對(duì)于 TCP 方式的網(wǎng)絡(luò)編程提 供了良好的支持,在實(shí)際實(shí)現(xiàn)時(shí),以 類代表客戶端連接,以 類代表服務(wù)器端連接。 此時(shí), 正則表達(dá)式 就成為了我們最好的選擇。 也有很多研究將寬度優(yōu)先搜索策略應(yīng)用于聚焦爬蟲中 . 其基本思想是認(rèn)為與初始 URL 在一定鏈接距離內(nèi)的網(wǎng)頁具有主題相關(guān)性的概率很大 。它只訪問經(jīng)過網(wǎng)頁分析算法預(yù)測為“有用”的網(wǎng)頁。 (6) 繼續(xù)查找 V 的其他鄰接頂點(diǎn) col,轉(zhuǎn)到步驟 (5),若 V 的所有鄰接頂點(diǎn)都已經(jīng)被訪問過,則轉(zhuǎn)到步驟 (2)。 廣度優(yōu)先搜索 寬度優(yōu)先搜索算法 (又稱廣度優(yōu)先搜索 ) 是最簡便的圖的搜索算法之一 ,這一算法也是很多重要的圖的算法的原型 。示例代碼如下: OutputStream os = ()。該包中既包含基礎(chǔ)的網(wǎng)絡(luò)編程類,也包含封裝后的專門處理 WEB 相關(guān)的處理類。 關(guān)閉網(wǎng)絡(luò)連接 在數(shù)據(jù)交換完成以后,關(guān)閉網(wǎng)絡(luò)連接,釋放程序占用的端口、內(nèi)存等系統(tǒng)資源,結(jié)束網(wǎng)絡(luò)編程。 TCP 是一個(gè)面向連接的協(xié)議,為用戶進(jìn)程提供可靠的全雙工字節(jié)流。 Java 網(wǎng)絡(luò) 編程 網(wǎng)絡(luò)編程就是兩個(gè)或多個(gè)設(shè)備之間的數(shù)據(jù)交換,其實(shí)更具體的說,網(wǎng)絡(luò)編程就是兩個(gè)或多個(gè)程序之間的數(shù)據(jù)交換,和普通的單機(jī)程序相比,網(wǎng)絡(luò)程序最大的不同就是需要交換數(shù)據(jù)的程序運(yùn)行在不同的計(jì)算機(jī)上,這樣就造成了數(shù)據(jù)交換的復(fù)雜。當(dāng)線程的 run 方法運(yùn)行完畢,線程將被拋棄 ,進(jìn)入死亡狀態(tài)。 Thread(String name)。 “ Bug”,因此要小心使用。每個(gè)進(jìn)程包含一到多個(gè)線程。 CONNECT HTTP/ 協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。 同樣也分為三部分,第一部分叫 request line, 第二部分叫 request header,第三部分是 body. header 和 body 之間也有 個(gè)空行, 結(jié)構(gòu)如 圖 22: 圖 22 Response 消息結(jié)構(gòu) HTTP/versionnumber 表示 HTTP 協(xié)議的版本號(hào), statuscode 和 message 請(qǐng)看下節(jié) [HTTP 狀態(tài)代成都學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì)) 7 碼 ]的詳細(xì)解釋 . 請(qǐng)求方法 HTTP/ 協(xié)議中共定義了八種方法(有時(shí)也叫“動(dòng)作”)來表明 RequestURI 指定的資源的不同操作方式: 本系統(tǒng)主要研究 Get 請(qǐng)求的特點(diǎn)。是萬維網(wǎng)( world wide web)交換信息的基礎(chǔ)。 URL 結(jié)構(gòu)一般分為兩個(gè)部分,一個(gè)是物理結(jié)構(gòu),一個(gè)是邏輯結(jié)構(gòu)。 登陸要求。從此搜索引擎進(jìn)入了高速發(fā)展時(shí)期。 Jug head 是后來另一個(gè) Gopher 搜索工具。高效,優(yōu)秀的自動(dòng)獲取資源程序可以使人們?cè)诨ヂ?lián)網(wǎng)上尋找到更及時(shí),更準(zhǔn)確的信息。用戶通過輸入自己感興趣的關(guān)鍵字就能獲得與之相關(guān)的網(wǎng)頁。 作者簽名: 日 期: 成都學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì)) 基于多線程的網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn) 摘要 : 網(wǎng)絡(luò)爬蟲( Web Crawler),又叫網(wǎng)絡(luò)蜘蛛( Web Spider),是搜索引擎的重要組成部分。 系統(tǒng) 可以進(jìn)行面向主題的抓取。如果把整個(gè)互聯(lián)網(wǎng)當(dāng)成一個(gè)網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個(gè)原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁都抓取下來。作為搜索引擎的資源采集部分,網(wǎng)絡(luò)爬蟲的性能將直接影響到整個(gè)搜索引擎索引網(wǎng)頁的數(shù)量、質(zhì)量和更新周期。與Wanderer 相對(duì)應(yīng), Martin Kosher 于 1993 年 10 月創(chuàng)建了 ALIWEB,它是 Archie 的 HTTP 版本。 現(xiàn)今,網(wǎng)絡(luò)爬蟲主要分為通用爬蟲和聚焦爬蟲兩類。 無休止 的 跳轉(zhuǎn)。 統(tǒng)一資源定位符 URL 是對(duì)可以從因特網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示。正在傳輸?shù)念愋陀?ContentType 加以標(biāo)記。 GET 向特定的資源發(fā)出請(qǐng)求。 它們有著以下的區(qū)別: 1. GET 提交的數(shù)據(jù)會(huì)放在 URL 之后,以 ?分割 URL 和傳輸數(shù)據(jù),參數(shù)之間以 amp。線程和進(jìn)程的區(qū)別在于 ,子進(jìn)程和父 進(jìn)程有不同的代碼和數(shù)據(jù)空間 ,而多個(gè)線程則共享數(shù)據(jù)空間 ,每個(gè)線程有自己的執(zhí)行堆棧和程序計(jì)數(shù)器為 其執(zhí)行上下文 .多線程主要是為了節(jié)約 CPU時(shí)間 ,發(fā)揮利用 ,根據(jù)具體情況而定 . 線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和 CPU。每個(gè) JAVA應(yīng)用程序都至少有一個(gè)線程,這就是所謂的主線程。調(diào)用 start()方法并不一定馬上會(huì)執(zhí)行這個(gè)線程,正如上面所說,它只是進(jìn)入 Runnble 而不是 Running。 JAVA 提供了多種機(jī)制以實(shí)現(xiàn)線程同步。 TCP/IP 協(xié)議不是 TCP 和 IP 這兩個(gè)協(xié)議的合稱,而是指因特網(wǎng)整個(gè) TCP/IP 協(xié)議族。 網(wǎng)絡(luò)編程步驟 無論使用 TCP 方式還是 UDP 方式進(jìn)行網(wǎng)絡(luò)通訊,網(wǎng)絡(luò)編程都是由客戶端和服務(wù)器端組成。 交換數(shù)據(jù) 服務(wù)器端通過獲得的連接進(jìn)行數(shù)據(jù)交換。在進(jìn)行網(wǎng)絡(luò)編程時(shí),底層網(wǎng)絡(luò)通訊的細(xì)節(jié)已經(jīng)實(shí)現(xiàn)了比較高的封裝,所以在程序員實(shí)際編程時(shí),只需要指定 IP 地址和端口號(hào)碼就可以建立連接了。 正則表達(dá)式 特點(diǎn) 正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對(duì)字符串的一種過濾邏輯。 下面先來看看圖的寬度優(yōu)先遍歷過程。存在的一個(gè)問題是,在爬蟲抓取路徑上的很多相關(guān)網(wǎng)頁可能被忽略,因?yàn)樽罴褍?yōu)先策略是一種局部最優(yōu)搜索算法。 (5) 若 V 的鄰接頂點(diǎn) col 未被訪問過,則 col 進(jìn)隊(duì)列。深度優(yōu)先在很多情況下會(huì)導(dǎo)致爬蟲的陷入 (trapped)問題,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。 連接一旦建立,則完成了客戶端編程的第一步,緊接著的步驟就是按照“請(qǐng) 求 響應(yīng)”模型進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換,在 Java 語言中,數(shù)據(jù)傳輸功能由 Java IO 實(shí)現(xiàn),也就是說只需要從連接中獲得輸入流和輸出流即可,然后將需要發(fā)送的數(shù)據(jù)寫入連接對(duì)象的輸出流中,在發(fā)送完成以后從輸入流中讀取數(shù)據(jù)即可。 和網(wǎng)絡(luò)編程有關(guān)的基本 API 位于 包中,該包中包含了基本的網(wǎng)絡(luò)編程實(shí)現(xiàn),該包是網(wǎng)絡(luò)編程的基礎(chǔ)。根據(jù)邏輯需要,可以多次交換數(shù)據(jù),但是還是必須遵循請(qǐng)求響應(yīng)模型。 TCP 傳輸控制協(xié)議( Transmission Control Protocol)。synchronized 關(guān)鍵字實(shí)現(xiàn)的基本操作是把每個(gè)需要線程同步的部分定義為一個(gè)臨界區(qū),在臨界區(qū)中同成都學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì)) 11 一時(shí)刻只有一個(gè)線程被執(zhí)行。 線程調(diào)度程序根據(jù)調(diào)度策略來調(diào)度不同的線程,調(diào)用線程的 run 方法給已經(jīng)注冊(cè)的各個(gè)線程以執(zhí)行的機(jī)會(huì),被調(diào)度執(zhí)行的線程進(jìn)入運(yùn)行( Running)狀態(tài)。創(chuàng)建一個(gè)名為 name 的目標(biāo)為 target 的線程。 。 (摘自 百度百科 [5]) 定義 線程( Thread):每個(gè)正在系統(tǒng)上 運(yùn)行的程序都是一個(gè)進(jìn)程。 TRACE 回顯服務(wù)器收到的請(qǐng)求,主要用于測試或診斷。當(dāng)使用的是 GET 方法的時(shí)候, body 是為空的 Response 消息的結(jié)構(gòu), 和 Request 消息的結(jié)構(gòu)基本一樣。超文本傳輸協(xié)議 (HTTPHypertext transfer protocol) 是分布式,協(xié)作式,超媒體系統(tǒng)應(yīng)用之 間的通信協(xié)議。簡單 地說, URL 就是 Web 地址,俗稱“網(wǎng)址”。如果未開啟,則無法進(jìn)行訪問,訪問頁面顯示的也不會(huì)正常,這種方式會(huì)讓蜘蛛無法進(jìn)行訪問。同年 4 月,斯坦福( Stanford)大學(xué)最為著名的兩名博士生,美籍華人楊致遠(yuǎn)( Gerry Yang)和 David Filo 共同創(chuàng)辦了Yahoo 公司,并成功地使搜索引擎的概念深入人心。由于 Archie 深受歡迎,受其啟發(fā),Nevada System Computing Services 大學(xué)于 1993年開發(fā)了一個(gè) Gopher( Gopher FAQ)搜索工具 Veronica( Veronica FAQ)。不同的搜索引擎,會(huì)根據(jù)對(duì)搜索結(jié)果的不同需求,選擇最合適的爬行策略來搜集互聯(lián)網(wǎng)上的信息。搜索引擎搜集互聯(lián)網(wǎng)上數(shù)以億計(jì)的網(wǎng)頁,并為每個(gè)關(guān)鍵詞建立索引。 作 者 簽 名: 日 期: 指導(dǎo)教師簽名: 日 期: 使用授權(quán)說明 本人完全了解 大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)校可以采用影印、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉績?nèi)容。從 行為 上來看,它更近似于主題網(wǎng)絡(luò)爬蟲。 WEB 資源自動(dòng)獲取技術(shù)程序就是用來搜集網(wǎng)頁的程序。高效,優(yōu)秀的爬蟲程序可以使人們?cè)诨ヂ?lián)網(wǎng)上尋找到更及時(shí),更準(zhǔn)確的信息。 ALIWEB不使用“機(jī)器人”程序,而是靠網(wǎng)站主動(dòng)提交信息來建立 自己的鏈接索引,類似于現(xiàn)在我們熟知的Yahoo。通用搜索引擎的目標(biāo)是盡可能大的網(wǎng)絡(luò)覆蓋率,通用搜索引擎大多提供基于關(guān)鍵字的檢索。對(duì)搜索引擎來說只對(duì) 301 跳轉(zhuǎn)相對(duì)來說比較友好,對(duì)其他形式的跳轉(zhuǎn)都是比較敏感,例如: JavaScript 跳轉(zhuǎn)、 Meta Refresh 跳轉(zhuǎn)、 Flash 跳轉(zhuǎn)、 302 跳轉(zhuǎn)。URL 給資源的位置提供一種抽象的識(shí)別方法,并用這種方法給資源定位。 無 連接:無連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。注意: GET 方法不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中,例如在web 。相連,如 ? name = XXX amp。 (摘自百度百科 [5]) 優(yōu)點(diǎn) 使用線程可以把占據(jù)時(shí)間長的程序中的任務(wù)放到后臺(tái)去處理。它由 JVM 創(chuàng)建并調(diào)用 JAVA 應(yīng)用程序的 main方法。 我們也可以 通過實(shí)現(xiàn) Runnable 接口并實(shí)現(xiàn)接口中定義的唯一方法 run(),可以創(chuàng)建一個(gè)線程。多數(shù) JAVA 同步是以對(duì)象鎖定為中心的。 而最主要的是 TCP 協(xié)議和 IP 協(xié)議。當(dāng)然, B/S 結(jié)構(gòu)的編程中只需要實(shí)現(xiàn)服務(wù)器端即可。服務(wù)器端的數(shù)據(jù)交換步驟是首先接收客戶端發(fā)送過來的數(shù)據(jù),然后進(jìn)行邏輯處理,再把處理以后的結(jié)果數(shù)據(jù)發(fā)送給客戶端。正是由于這種高度的封裝,一方面簡化了 Java 語言網(wǎng)絡(luò)編程的難度,另外也使得使用 Java 語言進(jìn)行網(wǎng)絡(luò)編程時(shí)無法深入到網(wǎng)絡(luò)的底層,所以使用 Java 語言進(jìn)行網(wǎng)絡(luò)底層系統(tǒng)編程很困難,具體點(diǎn)說, Java 語言無法實(shí)現(xiàn)底層的網(wǎng)絡(luò)嗅探以及獲得 IP 包結(jié)構(gòu)等 信息。 通過 給定一個(gè)正則表達(dá)式和另一個(gè)字符串,我們可以達(dá)到如下的目的: (稱作“匹配”); ,從字符串中獲取我們想要的特定部分。圖的寬度優(yōu)先遍歷 (BFS)算法是一個(gè)分層搜索的過程,和樹的層序遍歷算法相同。因此需要將最佳優(yōu)先結(jié)合具體的應(yīng)用進(jìn)行改進(jìn),以跳出局部最優(yōu)點(diǎn)。 (4) 查找頂點(diǎn) V 的第一個(gè)鄰接頂點(diǎn) col。 網(wǎng)頁搜索策略 在抓取網(wǎng)頁的時(shí)候,網(wǎng)頁的抓取策略可以 分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種。如果建立連接時(shí),本機(jī)網(wǎng)絡(luò)不通,或服務(wù)器端程序未開啟,則會(huì)拋出異常。 Java 網(wǎng)絡(luò)編程技術(shù) Java 語言是在網(wǎng)絡(luò)環(huán)境下誕生的,所以 Java 語言雖然不能說是對(duì)于網(wǎng)絡(luò)編程的支持最好的語言,但是必須說是一種對(duì)于網(wǎng)絡(luò)編程提供良好支持的語言,使用 Java 語言進(jìn)行網(wǎng)絡(luò)編程將是一件比較輕松的工作。交換數(shù)據(jù)嚴(yán)格按照請(qǐng)求響應(yīng)模型進(jìn)行,由客戶端發(fā)送一個(gè)請(qǐng)求數(shù)據(jù)到服務(wù)器,服務(wù)器反饋一個(gè)響應(yīng)數(shù)據(jù)給客戶端,如果客戶端不發(fā)送請(qǐng)求則服務(wù)器端 就不響應(yīng)。 其中 主要 使用 的 基于 TCP 和 UDP 的 網(wǎng)絡(luò)編程。 JAVA 使用 synch
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1