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

正文內(nèi)容

網(wǎng)絡爬蟲的設計與實現(xiàn)畢業(yè)論文正稿-wenkub.com

2025-06-25 21:18 本頁面
   

【正文】 分析設計一些比較復雜的爬行策略,優(yōu)化爬蟲程序。但是在功能細節(jié)上還有很多不足,比如系統(tǒng)不夠優(yōu)化,功能不夠強大,沒有解析網(wǎng)頁信息。在這個 3 個月里,我不斷學習,探索,從對網(wǎng)絡爬蟲一無所知,到能成功編寫出網(wǎng)絡爬蟲程序。.. .. .. ..我在 SpiderWorker 的 run 方法寫入這樣一段代碼:(線程+ biaoji+運行)。對應圖 的爬蟲結果,可以看到這段 URL 的確被過濾了。所以這種 URL 因該過濾掉。最先檢索出來 href 如下:.. .. .. ..這是一個相對地址,對應圖 的爬蟲結果。5 分鐘內(nèi)總共爬行出了 2201 個 URL。} catch (Exception ex) {.. .. .. ..(Error : + ())。下面是 JAVA 程序連接MYSQL 數(shù)據(jù)庫的代碼。middlequeue 表和 databasequeue 表都只有一個字段 URL,同時它作為主鍵,因為存入的 URL 不可能重復。while (()) {((url))。Statement stmt = null。對于 MYSQL 數(shù)據(jù)庫,可以使用 LIMIT 這個關鍵字。)。)。(0).remove(0)。下面是具體實現(xiàn)的 JAVA 代碼。具體的實現(xiàn)方法是,當存入緩存超過一定數(shù)目的時候。但是因為 URL 等待隊列會非常巨大,所以我將 URL 等待隊列設計成 3 段式。((url), true)。這樣當進行 URL 去重處理時,會認為它們不是一個 URL。} finally {()。return (key)。public LRULinkedHashMap(int maxCapacity) {super(maxCapacity, DEFAULT_LOAD_FACTOR, true)。它的具體構造如下:.. .. .. ..public class LRULinkedHashMapK, V extends LinkedHashMapK, V {private static final long serialVersionUID = 1L。而且產(chǎn)生碰撞的幾率非常小,可以忽略不計。 URL 隊列管理 URL 消重處理URL 消重處理,我是用 LRU 算法加上 MD5 壓縮算法來實現(xiàn)的。if ((((39。所以我們可以通過判斷 URLs 中是否包含站點 host 就可以了。代碼通過檢索 URL 字符串中是否包含.css,.rar,.zip這些后綴來進行判斷。當?shù)玫竭@些完整的 URL 地址以后,我們需要對其進行過濾。a href=../mlist/ target=_self 動作片/aa href= 例如上面的 HTML 代碼,如果截取出來的 URL 為../mlist/ 這種形式,即為相對地址。if (isSiteInsideUrl(url, urlQueueManager)) {if (!(url)) {(url)。\39。String url = 。這個地方 href=沒有接續(xù)任何符號,所以當我們沒有發(fā)現(xiàn)單引號或雙引號的時候,可以判斷為這種情況。之間的這段字符串即為 URL。然后判斷下表 i+1 位置上的字符是雙引號,單引號或者兩者皆不是,然后選擇對應的字符作為截取 URL 的終止標記。這個方法是通過調(diào)用 JAVA 里面的 URL 這個類,可以用給定的 URL 構造這個類的一個實例,然后通過 openStream()這個方法得到 HTML 代碼的數(shù)據(jù)流,然后再一行一行地把數(shù)據(jù)流轉(zhuǎn)換成 String 字符串,再用 StringBuffer 將這些字符串拼接成一個完整的 HTML 代碼。br = new BufferedReader(in)。connection = (HttpURLConnection) ()。InputStreamReader in = null。while (s == null) {s = ()。我在這個方法里定義了一個循環(huán),這個線程會重復地執(zhí)行爬蟲動作。圖 .. .. .. ..第五章 系統(tǒng)實現(xiàn) 實現(xiàn)工具操作系統(tǒng)是 winXP。所以將等待 URLs 存入數(shù)據(jù)庫中,并設計 2 個緩存區(qū),用于向隊列中加入和取得 URLs。這些格式的 URL 是無法獲取 HTML 代碼的,也就不可能進行 URL 解析。 URL 解析截取出來的字符串,可能為相對地址或者絕對地址。比如 href=”url”這樣情況,我們就可以通過截取雙引號之間的內(nèi)容來獲取 URL;如果是 href=’url’這種情況,我們就需要截取單引號之間的內(nèi)容來獲取 URL;或者有些是 href=url,我們需要以等號為開始標記,而這種情況通常結尾是空格或者符號。HTML 代碼中,頁面之間的跳轉(zhuǎn),關聯(lián)是通過 href 標簽來實現(xiàn)的。第三個方框為,解析 b 對應 HTML 獲取 URLs:efg,同時刪除 URL:b。廣度優(yōu)先算法的等待隊列設計如圖 所示。如圖 ,假如 a 代表初始 URL,bcd 為以 a 獲取的 3 個 URLs,efg 為以b 獲取的 URLs,以此類推。廣度優(yōu)先算法的實行理論是覆蓋更多的節(jié)點,所以此爬蟲程序選擇了廣度優(yōu)先算法。然后線程 1 會再從 URL 隊列中獲取新的 URL,下載 HTML 代碼,并解析出 URLs,再加入到 URL 隊列中去。這就意味著遞歸的 SPIDER 程序不能使用多線程??紤]使用哪一種方式的前提是,構造的 SPIDER 程序必須能夠訪問非常大的 Web 站點。如果獲取到的 URL 為相對地址,需要轉(zhuǎn)換為絕對地址,然后淘汰站外 URLs,錯誤 URLs 或者不能解析的 URL 地址。DateBaseConnect 類:用于提供數(shù)據(jù)庫連接。而采用直接持久化到數(shù)據(jù)庫, 則需要大量的數(shù)據(jù)庫連接、查詢等操作, 系統(tǒng)效率會明顯下降. 如果采用 URL 壓縮的辦法,盡管在一定程度上可以平衡空間和時間的矛盾, 但仍然不適用于大規(guī)模數(shù)據(jù)采集的 SPIDER... .. .. ..圖 SPIDER 體系結 各主要功能模塊(類)設計SPIDERWorker 類:該類繼承自線程類,請求任務 URL,根據(jù)得到的 URL 下載相應的 HTML 代碼,利用 HTML 代碼調(diào)用其他模塊完成相關處理。 SPIDER 體系結構此爬蟲程序主要分為三個部分:任務執(zhí)行端,任務調(diào)度端,數(shù)據(jù)服務端。但網(wǎng)頁數(shù)目是如此之大,如果任 SPIDER 程序無窮地搜索下去,那么程序幾乎不能終止。 Hub 表示一個 Web 頁面指向其它頁面的數(shù)量, 即該頁面的出度值. 網(wǎng)頁的出度值越大, 其 Hub 值越高. 由于 Hub 值高的頁面通常都提供了指向權威頁面的鏈接, 因而起到了隱含說明某主題頁面權威性.. .. .. .. (Hyperlink Induced Top ic Search) 算法是利用Hub246。當目標網(wǎng)頁存在時 2 調(diào)用URLConnection 類 getInputStream()函數(shù)明確打開到 URL 的連接,獲取輸入流,再用 包中的 InputStreamReader 類讀取該輸入流,將網(wǎng)頁下載下來。如:URL url=new URL(如果傳遞無效的 URL 給 URL 對象,該對象會拋出 MalformedURLException異常。這樣,在進行過多次查找操作后,最近被命中過的內(nèi)容就像鏈表的頭移動,而沒有命中過的內(nèi)容就向鏈表的后面移動。 基于布隆過濾器(Bloom Filter)的存儲使用布隆過濾器,設計多個 Hash 函數(shù),也就是對每個字符串進行映射是經(jīng)過多個 Hash 函數(shù)進行映射,映射到一個二進制向量上,這種方式充分利用了比特位。 基于嵌入式 Berkeley DB 的存儲Berkeley DB 的特點就是只存儲鍵值對類型數(shù)據(jù),這和 URL 去重有很大關系。另外,MD5 算法能夠?qū)⑷魏巫址畨嚎s為 128 位整數(shù),并映射為物理地址,而.. .. .. ..且 MD5 進行 Hash 映射碰撞的幾率非常小,這點非常好。這樣,URL 去重存儲庫就是要維護一個 Hash 表,如果 Hash 函數(shù)設計的不好,在進行映射的時候,發(fā)生碰撞的幾率很大,則再進行碰撞的處理也非常復雜。這種方式幾乎沒有人考慮使用了,但是這種檢查的思想是非常直觀的。我們先從最簡單的情況說起,然后逐步優(yōu)化,最終得到一個非常不錯的解決方案。而想要控制這種重復性下載問題,就要考慮下載所依據(jù)的超鏈接,只要能夠控制待下載的 URL 不重復,基本可以解決同一個網(wǎng)頁重復下載的問題。URL 消重工作量是非常巨大的。在持續(xù)下載的過程中,新的 URL 非常少,還是以新浪網(wǎng)舉例,1 天 24 小時中總共出現(xiàn)的新 URL 也就是 10000 左右。在 JAVA 中實現(xiàn)線程同步的另一個方法是通過使用 synchronized 關鍵字。JAVA 中從 Object 對象繼承來的每個對象都有一個單獨的鎖。注意,因為這個方法會引起線程的安全問題,已經(jīng)被不推薦使用了,所以,不要再程序調(diào)用這個方法。你不能調(diào)用restart 方法來重新開始一個處于死亡狀態(tài)的線程,但是,你可以調(diào)用處于死亡狀態(tài)的線程對象的各個方法。當使用 new 來新建一個線程時,它處于 New 狀態(tài),這個時候,線程并未進行任何操作。在使用 Runnable 接口時,不能直接創(chuàng)建所需類的對象并運行它,而是必須從 Thread 類的一個實例內(nèi)部運行它。每個線程都是通過某個特定 Thread 對象所對應的方法 run()來完成其操作的,方法 run()稱為線程體。創(chuàng)建一個名為 name 的線程。創(chuàng)建一個線程,并指定一個目標。 創(chuàng)建線程 創(chuàng)建線程方式一在 JAVA 中創(chuàng)建線程的一種方式是通過 Thread 來實現(xiàn)的。我們知道,每個 JAVA 應用程序都至少有一個線程,這就是所謂的主線程。 JAVA 線程模型我們知道,計算機程序得以執(zhí)行的三個要素是:CPU,程序代碼,可存取的數(shù)據(jù)。因此,雖然我們看到的都是一些同步的操作,但實際上,對于計算機而言,它在某個時間點上只能執(zhí)行一個程序,除非你的計算機是多 CPU 的。CPU 不斷的在這些程序之間“跳躍”執(zhí)行。比如,我在 Microsoft Word 編寫本論文的時候,我還打開了一個 mp3 播放器來播放音樂,偶爾的,我還會再編輯Word 的同時讓我的機器執(zhí)行一個打印任務,而且我還喜歡通過 IE 從網(wǎng)上下載一個 Flash 動畫。通過實現(xiàn)此爬蟲程序可以定點搜集某一站點的 URLs,如果需要搜集其他信息,可以在解析 URLs 的同時,解析獲取相應信息。不同的搜索引擎,會根據(jù)對搜索結果的不同需求,選擇最合適的爬行策略來搜集互聯(lián)網(wǎng)上的信息。 采用爬行深度、頁面導入鏈接量分析等方法, 限制從程序下載不相關的 Web 頁的選擇性爬行程序等等。以何種策略偏歷互聯(lián)網(wǎng)上的網(wǎng)頁,也成了爬蟲程序主要的研究方向。這使得人們在網(wǎng)上找到所需的信息越來越困難,這種情況下搜索引擎應運而生。 HTML code parse. etc. This SPIDER can collect URLs from one web site, and store URLs into database. 【KEY WORD】SPIDER。 【關鍵字】網(wǎng)絡爬蟲;JAVA;廣度優(yōu)先;多線程。通過網(wǎng)絡爬蟲不僅能夠為搜索引擎采集網(wǎng)絡信息,而且可以作為定向信息采集器,定向采集某些網(wǎng)站下的特定信息,如招聘信息,租房信息等。本文通過 JAVA 實現(xiàn)了一個基于廣度優(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, us
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1