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

正文內容

基于多線程的網(wǎng)絡爬蟲的設計與實現(xiàn)畢業(yè)論文-資料下載頁

2025-06-30 14:58本頁面

【導讀】導下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致。含我為獲得及其它教育機構的學位或學歷而使用過的材料。明并表示了謝意。以贏利為目的前提下,學校可以公布論文的部分或全部內容。蟲關鍵技術是對URL進行分析和去重。為使網(wǎng)絡爬蟲具備更高效的抓取能力,因而使用了多線程技。同時為了避免無限制的等待,應該對網(wǎng)絡爬蟲連接網(wǎng)絡及讀取時間最大值進行設定。目標是研究并實現(xiàn)一個實現(xiàn)簡單的可在后臺自動運行的爬蟲程序。從行為上來看,它更近似于主題網(wǎng)絡爬蟲。

  

【正文】 有問題就發(fā)出信號,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡?。?IP 是給因特網(wǎng)的每一臺電腦規(guī)定一個地址。 TCP/IP 協(xié)議不是 TCP 和 IP 這兩個協(xié)議的合稱,而是指因特網(wǎng)整個 TCP/IP 協(xié)議族。 而最主要的是 TCP 協(xié)議和 IP 協(xié)議。 (摘自百度百科 [5]) 本課題 將采用 IPv4 協(xié)議 作為 開發(fā) 基礎。 IPv4 網(wǎng)際協(xié)議版本 4( Inter Protocol version 4)。 IPv4( 通常稱之 IP)自 20 世紀 80 年代早期以來一直是網(wǎng)際協(xié)議族的主力協(xié)議。它使用 32 位地址。 IPv4給 TCP、 UDP、 SCTP、 ICMP 和 IGMP 提供分組遞送服務。 其中 主要 使用 的 基于 TCP 和 UDP 的 網(wǎng)絡編程。 TCP 傳輸控制協(xié)議( Transmission Control Protocol)。 TCP 是一個面向連接的協(xié)議,為用戶進程提供可靠的全雙工字節(jié)流。 TCP 套接字是一種流套接字( stream socket)。 TCP 關心確認、超時和重傳之類的細節(jié)。大多數(shù)因特網(wǎng)應用程序使用 TCP。 TCP 的可靠連接得益于它的三次握手原 理。 TCP協(xié)議真 是 通過 “三次握手 ”的 方式保證了 傳輸 的可靠性。 本課題 將 會 采用該種 協(xié)議為基礎,進行編程。 網(wǎng)絡編程步驟 無論使用 TCP 方式還是 UDP 方式進行網(wǎng)絡通訊,網(wǎng)絡編程都是由客戶端和服務器端組成。當然, B/S 結構的編程中只需要實現(xiàn)服務器端即可。所以,下面介紹網(wǎng)絡編程的步驟時,均以 C/S 結構為基礎進行介紹。說明:這里的步驟實現(xiàn)和語言無關,也就是說,這個步驟適用于各種語言實現(xiàn),不局限于 Java 語言。 (一) 客戶端網(wǎng)絡編程步驟 客戶端 (Client)是指網(wǎng)絡編程中首先發(fā)起連接的程序,客戶端一般實現(xiàn)程 序界面和基本邏輯實現(xiàn),成都學院學士學位論文(設計) 12 在進行實際的客戶端編程時,無論客戶端復雜還是簡單,以及客戶端實現(xiàn)的方式,客戶端的編程主要由三個步驟實現(xiàn): 建立網(wǎng)絡連接 客戶端網(wǎng)絡編程的第一步都是建立網(wǎng)絡連接。在建立網(wǎng)絡連接時需要指定連接到的服務器的 IP地址和端口號,建立完成以后,會形成一條虛擬的連接,后續(xù)的操作就可以通過該連接實現(xiàn)數(shù)據(jù)交換了。 交換數(shù)據(jù) 連接建立以后,就可以通過這個連接交換數(shù)據(jù)了。交換數(shù)據(jù)嚴格按照請求響應模型進行,由客戶端發(fā)送一個請求數(shù)據(jù)到服務器,服務器反饋一個響應數(shù)據(jù)給客戶端,如果客戶端不發(fā)送請求則服務器端 就不響應。根據(jù)邏輯需要,可以多次交換數(shù)據(jù),但是還是必須遵循請求響應模型。 關閉網(wǎng)絡連接 在數(shù)據(jù)交換完成以后,關閉網(wǎng)絡連接,釋放程序占用的端口、內存等系統(tǒng)資源,結束網(wǎng)絡編程。 最基本的步驟一般都是這三個步驟,在實際實現(xiàn)時,步驟 2 會出現(xiàn)重復,在進行代碼組織時,由于網(wǎng)絡編程是比較耗時的操作,所以一般開啟專門的現(xiàn)場進行網(wǎng)絡通訊。 (二) 服務器端網(wǎng)絡編程步驟 服務器端 (Server)是指在網(wǎng)絡編程中被動等待連接的程序,服務器端一般實現(xiàn)程序的核心邏輯以及數(shù)據(jù)存儲等核心功能。服務器端的編程步驟和客戶端不同,是由四個 步驟實現(xiàn),依次是: 監(jiān)聽端口 服務器端屬于被動等待連接,所以服務器端啟動以后,不需要發(fā)起連接,而只需要監(jiān)聽本地計算機的某個固定端口即可。這個端口就是服務器端開放給客戶端的端口,服務器端程序運行的本地計算機的 IP 地址就是服務器端程序的 IP 地址。 獲得連接 當客戶端連接到服務器端時,服務器端就可以獲得一個連接,這個連接包含客戶端的信息,例如客戶端 IP 地址等等,服務器端和客戶端也通過該連接進行數(shù)據(jù)交換。一般在服務器端編程中,當獲得連接時,需要開啟專門的線程處理該連接,每個連接都由獨立的線程實現(xiàn)。 交換數(shù)據(jù) 服務器端通過獲得的連接進行數(shù)據(jù)交換。服務器端的數(shù)據(jù)交換步驟是首先接收客戶端發(fā)送過來的數(shù)據(jù),然后進行邏輯處理,再把處理以后的結果數(shù)據(jù)發(fā)送給客戶端。簡單來說,就是先接收再發(fā)送,這個和客戶端的數(shù)據(jù)交換數(shù)序不同。其實,服務器端獲得的連接和客戶端連接是一樣的,只是數(shù)據(jù)交換的步驟不同。當然,服務器端的數(shù)據(jù)交換也是可以多次進行的。在數(shù)據(jù)交換完成以后,關成都學院學士學位論文(設計) 13 閉和客戶端的連接。 關閉連接 當服務器程序關閉時,需要關閉服務器端,通過關閉服務器端使得服務器監(jiān)聽的端口以及占用的內存可以釋放出來,實現(xiàn)了連接的關閉。 Java 網(wǎng)絡編程技術 Java 語言是在網(wǎng)絡環(huán)境下誕生的,所以 Java 語言雖然不能說是對于網(wǎng)絡編程的支持最好的語言,但是必須說是一種對于網(wǎng)絡編程提供良好支持的語言,使用 Java 語言進行網(wǎng)絡編程將是一件比較輕松的工作。 和網(wǎng)絡編程有關的基本 API 位于 包中,該包中包含了基本的網(wǎng)絡編程實現(xiàn),該包是網(wǎng)絡編程的基礎。該包中既包含基礎的網(wǎng)絡編程類,也包含封裝后的專門處理 WEB 相關的處理類。在本章中,將只介紹基礎的網(wǎng)絡編程類。 IAddress 類。該類的功能是代表一個 IP 地址,并且將 IP 地址和域 名相關的操作方法包含在該類的內部。 按照前面的介紹,網(wǎng)絡通訊的方式有 TCP 和 UDP 兩種,其中 TCP 方式的網(wǎng)絡通訊是指在通訊的過程中保持連接,有點類似于打電話,只需要撥打一次號碼 (建立一次網(wǎng)絡連接 ),就可以多次通話(多次傳輸數(shù)據(jù) )。這樣方式在實際的網(wǎng)絡編程中,由于傳輸可靠,類 似于打電話,如果甲給乙打電話,乙說沒有聽清楚讓甲重復一遍,直到 聽清楚為止,實際的網(wǎng)絡傳輸也是這樣,如果發(fā)送的一方發(fā)送的數(shù)據(jù)接收方覺得有問題,則網(wǎng)絡底層會自動要求發(fā)送方重發(fā),直到接收方收到為止。 在 Java 語言中,對于 TCP 方式的網(wǎng)絡編程提 供了良好的支持,在實際實現(xiàn)時,以 類代表客戶端連接,以 類代表服務器端連接。在進行網(wǎng)絡編程時,底層網(wǎng)絡通訊的細節(jié)已經(jīng)實現(xiàn)了比較高的封裝,所以在程序員實際編程時,只需要指定 IP 地址和端口號碼就可以建立連接了。正是由于這種高度的封裝,一方面簡化了 Java 語言網(wǎng)絡編程的難度,另外也使得使用 Java 語言進行網(wǎng)絡編程時無法深入到網(wǎng)絡的底層,所以使用 Java 語言進行網(wǎng)絡底層系統(tǒng)編程很困難,具體點說, Java 語言無法實現(xiàn)底層的網(wǎng)絡嗅探以及獲得 IP 包結構等 信息。但是由于 Java 語言的網(wǎng)絡編程比較簡單,所以還是獲得了廣泛的使用。 在使用 TCP 方式進行網(wǎng)絡編程時,需要按照前面介紹的網(wǎng)絡編程的步驟進行,下面分別介紹一下在 Java 語言中客戶端和服務器端的實現(xiàn)步驟。 在客戶端網(wǎng)絡編程中,首先需要建立連接,在 Java API 中以 類的對象代表網(wǎng)絡連接,所以建立客戶端網(wǎng)絡連接,也就是創(chuàng)建 Socket 類型的對象,該對象代表網(wǎng)絡連接,示例如下: Socket socket1 = new Socket(“”,10000)。 成都學院學士學位論文(設計) 14 Socket socket2 = new Socket(“”,80)。 上面的代碼中, socket1 實現(xiàn)的是連接到 IP 地址是 的計算機的 10000 號端口,而socket2 實現(xiàn)的是連接到域名是 的計算機的 80 號端口,至于底層網(wǎng)絡如何實現(xiàn)建立連接,對于程序員來說是完全透明的。如果建立連接時,本機網(wǎng)絡不通,或服務器端程序未開啟,則會拋出異常。 連接一旦建立,則完成了客戶端編程的第一步,緊接著的步驟就是按照“請 求 響應”模型進行網(wǎng)絡數(shù)據(jù)交換,在 Java 語言中,數(shù)據(jù)傳輸功能由 Java IO 實現(xiàn),也就是說只需要從連接中獲得輸入流和輸出流即可,然后將需要發(fā)送的數(shù)據(jù)寫入連接對象的輸出流中,在發(fā)送完成以后從輸入流中讀取數(shù)據(jù)即可。示例代碼如下: OutputStream os = ()。 //獲得輸出流 InputStream is = ()。 //獲得輸入流 上面的代碼中,分別從 socket1 這個連接對象獲得了輸出流和輸入流對象,在整個網(wǎng)絡編程中,后續(xù)的數(shù)據(jù)交換就變成了 IO 操作,也就是遵循“請求 響應”模型的規(guī)定,先向輸出流中寫入數(shù)據(jù),這些數(shù)據(jù)會被系統(tǒng)發(fā)送出去,然后在從輸入流中讀取服務器端的反饋信息,這樣就完成了一次數(shù)據(jù)交換過程,當然這個數(shù)據(jù)交換過程可以多次進行。這里獲得的只是最基本的輸出流和輸入流對象,還可以根據(jù)前面學習到的 IO 知識,使用流的嵌套將這些獲得到的基本流對象轉換成需要的裝飾流對象,從而方便數(shù)據(jù)的操作。 最后當數(shù)據(jù)交換完成以后,關閉網(wǎng)絡連接,釋放 網(wǎng)絡連接占用的系統(tǒng)端口和內存等資源, 完成網(wǎng)絡操作,示例代碼如 : ()。 正則表達式 由于要根據(jù) 用戶所提供的 對 爬蟲獲取到的 URL 和網(wǎng)頁內容進行分析 。 此時, 正則表達式 就成為了我們最好的選擇。 正則表達式 特點 正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。 通過 給定一個正則表達式和另一個字符串,我們可以達到如下的目的: (稱作“匹配”); ,從字符串中獲取我們想要的特定部分。 正則表達式的特點是: 、邏輯性和功能性非常的強; 成都學院學士學位論文(設計) 15 。 符號功能 正則表達式由一些 字符 和 元字符 ( met characters)組成。 普通 字符 包括大小寫的字母和數(shù)字,而 元字符 則具有特殊的含義 。 通過使用元字符,我們就能夠從一串字符中篩選和提取我們先要的信息了。而 Java 中通過了 Pattern 類,對正則表達式的使用提供了支持。 網(wǎng)頁搜索策略 在抓取網(wǎng)頁的時候,網(wǎng)頁的抓取策略可以 分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種。深度優(yōu)先在很多情況下會導致爬蟲的陷入 (trapped)問題,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。 廣度優(yōu)先搜索 寬度優(yōu)先搜索算法 (又稱廣度優(yōu)先搜索 ) 是最簡便的圖的搜索算法之一 ,這一算法也是很多重要的圖的算法的原型 。 Dijkstra 單源最短路徑算法和 Prim 最小生成樹算法都采用了和寬度優(yōu)先搜索類似的思想。寬度優(yōu)先搜索算法是沿著樹的寬度遍歷樹的節(jié)點 , 如果發(fā)現(xiàn)目標 , 則算法中止。該算法的設計和實現(xiàn)相對簡單 , 屬于盲目搜索 。 在目前為覆蓋盡可能多的網(wǎng)頁。一般使用 寬度優(yōu)先搜索方法 。 也有很多研究將寬度優(yōu)先搜索策略應用于聚焦爬蟲中 . 其基本思想是認為與初始 URL 在一定鏈接距離內的網(wǎng)頁具有主題相關性的概率很大 。 下面先來看看圖的寬度優(yōu)先遍歷過程。圖的寬度優(yōu)先遍歷 (BFS)算法是一個分層搜索的過程,和樹的層序遍歷算法相同。在圖中選中一個節(jié)點,作為起始節(jié)點,然后按照層次遍歷的方式,一層一層地進行訪問。圖的寬度優(yōu)先遍歷需要一個隊列作為保存當前節(jié)點的子節(jié)點的數(shù)據(jù)結構。具體的算法 (1) 頂點 V 入隊列。 (2) 當隊列非空時繼續(xù)執(zhí)行,否則算法為空。 (3) 出隊列,獲得隊頭節(jié)點 V,訪問頂點 V 并標記 V 已經(jīng)被訪問。 (4) 查找頂點 V 的第一個鄰接頂點 col。 (5) 若 V 的鄰接頂點 col 未被訪問過,則 col 進隊列。 (6) 繼續(xù)查找 V 的其他鄰接頂點 col,轉到步驟 (5),若 V 的所有鄰接頂點都已經(jīng)被訪問過,則轉到步驟 (2)。 這個方法有個優(yōu)點是 網(wǎng)絡蜘蛛在設計的時候比較容易。本課題選擇使用廣度優(yōu)先策略進行網(wǎng)頁抓取 。 深度 優(yōu)先搜索 深度優(yōu)先搜索所遵循的搜索策略是盡可能“深”地搜索圖 . 在深度優(yōu)先搜索中 , 對于最新發(fā)現(xiàn)的頂點 , 如果它還有以此為起點而未探測到的邊 , 就 沿此邊繼續(xù) 下去 . 當結點 v 的所有邊都己被探尋成都學院學士學位論文(設計) 16 過 , 搜索將回溯到發(fā)現(xiàn)結點 v 有那條邊的始結點 . 這一過程一直進行到已發(fā)現(xiàn)從源結點可達的所有結點為止 。 如果還存在未被發(fā)現(xiàn)的結點 , 則選擇其中一個作為源結點并重復以上過程 , 整個進程反復進行直到所有結點都被發(fā)現(xiàn)為止 . 深度優(yōu)先在很多情況下會導致爬蟲的陷入 (trapped)問題 , 所以它既不是完備的 , 也不是最優(yōu)的 。 最佳 優(yōu)先搜索 最佳優(yōu)先搜索策略按照一定的網(wǎng)頁分析算法,預測候選 URL 與目標網(wǎng)頁的相似度,或與主題的相關性,并選取評價最好的一個或幾個 URL 進行抓 取。它只訪問經(jīng)過網(wǎng)頁分析算法預測為“有用”的網(wǎng)頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關網(wǎng)頁可能被忽略,因為最佳優(yōu)先策略是一種局部最優(yōu)搜索算法。因此需要將最佳優(yōu)先結合具體的應用進行改進,以跳出局部最優(yōu)點。 成都學院學士學位論文(設計) 17 3 需求分析和模型 設計 網(wǎng)絡爬蟲的定義 定義 1:網(wǎng)絡爬蟲是一個自動提取網(wǎng)頁的程序,它為搜索引擎從 Web 上下載網(wǎng)頁,是搜索引擎的重要組成部分。通用網(wǎng)絡爬蟲從一個或若干初始網(wǎng)頁的 URL 開始,獲得初始網(wǎng)頁上的 URL 列表;在抓取網(wǎng)頁的過程中,不斷從當前頁面上 抽取新的 URL 放入待爬行隊列,直到滿足系統(tǒng)的停止條件。 定義 2:主題網(wǎng)絡爬蟲就是根據(jù)一定的網(wǎng)頁分析算法過濾與主題無關的鏈接,保留主題相關的鏈接并將其放入待抓取的 URL 隊列中;然后根據(jù)一定的搜索策略從
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1