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

正文內(nèi)容

網(wǎng)絡(luò)爬蟲的設(shè)計與實現(xiàn)畢業(yè)論文(參考版)

2025-06-26 02:26本頁面
  

【正文】 感謝李廣鎮(zhèn)同學(xué),戴國強同學(xué),潘秀銀同學(xué)在程序具體實施過程中給我提供了寶貴的意見和提議。希望在這一課題上達到另一個高度。所以在以后的時間,我將繼續(xù)研究網(wǎng)絡(luò)爬蟲技術(shù)。對于網(wǎng)絡(luò)爬蟲這個龐大的知識體系來說,這篇論文實現(xiàn)的功能只能算一些皮毛。這篇論文實現(xiàn)了一個基于廣度優(yōu)先策略的多線程爬蟲程序,可以搜集站內(nèi)URLs。對網(wǎng)絡(luò)爬蟲中比較主流的技術(shù)都有了更深的理解。電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文32第七章 結(jié)論從課題著手到現(xiàn)在論文完成,經(jīng)歷了 3 個月的時間。圖 圖 為控制臺打印出來的信息。根據(jù)測試結(jié)果可以得知爬蟲程序能夠正確解析出頁面 URLs。第三個被檢索到的 href 標(biāo)簽為:這是一段很標(biāo)準(zhǔn)的 URL,它的 host 為 并且可以得到 HTML 代碼。所以因該被過濾掉。這是程序設(shè)計上的不足。這個 URL 為 ico 文件,是不可能被當(dāng)作 HTML 解析的。程序?qū)⑵滢D(zhuǎn)化為了,絕對地址。我分析 HTML 代碼。下面是從數(shù)據(jù)庫里截圖的 2 段爬行結(jié)果。然后用爬蟲程序去運行。}return conn。// 建立到MySQL的連接conn = (jdbc: root, root)。public static Connection conn() {Connection conn = null。JAVA 程序和數(shù)據(jù)之間的通信是通過 JDBC 實現(xiàn)的。Middlequeue 用于 URL 等待隊列的主存儲部分。我建立了 2 個表,分別為 middlequeue 和databasequeue。}(delete from middlequeue limit 25)。res = (sql)。ResultSet res = null。下面是具體實現(xiàn)的 JAVA 代碼:public synchronized void waitQueueAdd() {String sql = SELECT * FROM middlequeue LIMIT 25。檢索存入數(shù)據(jù)庫最上端的 25 條數(shù)據(jù),然后依次將其加入到取出緩存區(qū)。具體的實現(xiàn)方法是:從數(shù)據(jù)庫里搜索前 25 條數(shù)據(jù),因為數(shù)據(jù)庫添加數(shù)據(jù)時是順序往下壓入的。}當(dāng)取出緩存區(qū)空以后,需要將數(shù)據(jù)庫的內(nèi)容加入到緩存區(qū)。)。(insert into databasequeue (url) values(39。)。(insert into middlequeue (url) values(39。while ((0).size() 0) {String url = (String)(0).get(0)。public synchronized void waitQueueDecrease() {try {Statement stmt = null。不斷重復(fù)這個操作,直到存入緩存被清空。調(diào)用 waitQueueDecrease()這個函數(shù),將存入緩存里的數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)庫。當(dāng)加入 URL 緩存太長時,調(diào)用下面的方法,將緩存區(qū)的內(nèi)容加入到數(shù)據(jù)庫。2 段基于內(nèi)存的 URL 緩存區(qū),和一個基于數(shù)據(jù)庫的儲存區(qū)。往里面加入URLs。return b。}boolean b = ((url))。所以我們必須先除去后面的/符號,再進行 URL 去重判斷。也許是同一個 URL,但是有些在最后一位接續(xù)/符號,而有些則沒有接續(xù)。}}電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文26}有了這個 map 以后,我就會用 URL 到里面去碰撞。return (key, value)。} finally {()。}Overridepublic V get(Object key) {try {()。 = maxCapacity。private final Lock lock = new ReentrantLock()。private final int maxCapacity。這樣就算 URL 數(shù)過大,也可以盡量避免重復(fù)下載 URL。第五章 系統(tǒng)實現(xiàn)25然后這個 URL 消重隊列的維護是同時 LRULinkedHashMap 來實現(xiàn)的。這個 hash 碼的長度相對較小,可以節(jié)省內(nèi)存開銷。因為URLs 的數(shù)量非常巨大,為了節(jié)省內(nèi)存空間。}}如果為站內(nèi)URL則加入到緩存隊列。.39。// if ((.)) {String str = (0,(.))。下面的代碼是 host 的情況。一般情況下同一網(wǎng)站內(nèi)的 URL 的 host 名因該是一致的。// 如果 url中包含以下 字符串,則不加入隊列if (().contains(.css)|| ().contains(.rar) || ()|| (.zip) || (javascript)) {return false。下面是一段實行代碼。很多 URL 它們指向的文件不是 HTML 文件,而是一些 CSS 文件,或者 RAR 包文件,或者只是接續(xù)“”符號,代表只是調(diào)用一段 javascript 代碼??梢耘袛嗨鼮榻^對地址。我們需要將其轉(zhuǎn)化為絕對地址。}在每個 URL 被截取出來之后,需要判斷這些 URL 是相對地址,還是絕對地址。}}haveHref = (href)。url = addURLhost(fromURL, url)。 == (0)) {html_text = (1)。// 當(dāng) href= 后以 開頭的情況if (39。// HTML中是否還含有href 標(biāo)簽boolean haveHref = (href)。public void getHref_UrlsList(String html_text, String fromURL,第五章 系統(tǒng)實現(xiàn)23UrlQueueManager urlQueueManager, int biaoji) {// 站內(nèi) URL隊列ListString siteInsideUrls = new ArrayListString()。我們就去檢索空格和標(biāo)簽,以下標(biāo)較小的字符作為截取 URL 的結(jié)束標(biāo)記。這步以后原字符串又被截取為“ target=”開始,我們可以繼續(xù)檢索 href=標(biāo)簽。當(dāng)完成這一步操作后,原字符串被截取從“ class=”開始。我們先檢索 href=標(biāo)記,然后判斷出第 i+1 位為一個雙引號,所以我們可以截取 i+1 位到第 2 個雙引號的位置。截取過后的 href 標(biāo)記就剔除它與它前面的部分,以便而后的操作可以繼續(xù)檢索 href 標(biāo)記,直到正個 HTML 代碼中所有的 href 標(biāo)記都被解析過后,操作終止。對于一個 HTML 代碼,我尋找其中的 href=字符串,然后記錄它的下表i。當(dāng)?shù)玫?HTML 代碼以后,程序就會調(diào)用 Url_Parse 這個類里面的方法來解析HTML。}return ()。String c。in = new InputStreamReader(())。()。url = new URL(sourse_url)。BufferedReader br = null。具體方法是調(diào)用 getHtml(String sourse_url)這個方法:HttpURLConnection connection = null。}如果沒有得到 URL 就繼續(xù)向 URL 等待隊列申請。所以我在這里寫了一個循環(huán):s = null。在這個循環(huán)里,首先會向 URL 等待隊列里請求一個 URL。我采用了第二種方法:public class SpiderWorker implements Runnable {在這個類中必須要實現(xiàn)重寫 run()這個方法。JAVA 程序的編寫工具是 ;數(shù)據(jù)庫是 MYSQL 5 。電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文20圖 表示了 URL 等待隊列的結(jié)構(gòu)。URL 等待隊列設(shè)計成三段式:第一段為一個 List,用來加入新得到的 URL。為了把爬行限制在同一站點內(nèi)需要截斷指向站外的鏈接,保證 SPIDER 總在站內(nèi)執(zhí)行,即準(zhǔn)確地根據(jù)超鏈 URL RFC 對 URL 的定義可知,URL 的格式為 一般情況下,同一網(wǎng)站內(nèi)所有頁面對應(yīng) URL 的 host 是相同的,所以可以使用 host 匹配作為判斷超鏈?zhǔn)欠裰赶蛘就獾臉?biāo)準(zhǔn). 進一步研究發(fā)現(xiàn),很多大型網(wǎng)站中一個分類目錄對應(yīng)一個主機, host 的組成可知, host 的格式一般為[站內(nèi)分].站點類型串只有[ |edu|gov|| 國家域名]幾種類型,所以我們?nèi)≌军c類型各異串前面的串,即站點標(biāo)志串作匹配,超鏈 URL的 host 中是否包含此串,為超鏈?zhǔn)欠裾緝?nèi)的判斷標(biāo)準(zhǔn). URL 保存因為等待 URLs 的數(shù)目非常多,如果全部采用 List 來存儲非常的占用內(nèi)存空間。所以我們需要過濾掉這些 URLs。因為解析出來的 URL 地址可能是一些文件的地址,或者為 javascript 文件或者 css文件。所以需要判斷 URL 為絕對地址,還是相對地址。這些情況就需要更細(xì)致的考慮,才能獲取。通過這種方法,我們獲取網(wǎng)頁中大部分的 URLs。但是不同的網(wǎng)站 href=后面的內(nèi)容有所不同。我們需要獲取 HTML 代碼中的 URLs,就可以通過尋找 href 標(biāo)簽來達到目的。 URL 抽取,解析和保存 URL 抽取通過觀察研究 HTML 代碼,我們可以知道。第四個方框為,解析 e 對應(yīng) HTML 獲取URLs:nop,并刪除 e。第二個方框為,解析 a 對應(yīng) HTML 獲取URLs:bcd,同時刪除 a。電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文18圖 圖 列舉了不同時間段時,URL 等待隊列的存儲狀態(tài)。當(dāng)這一層 URLs 全部解析完后,再開始下一層 URLs。那么這些 URLs 獲取的順序就是 abcdefghijklmnop這樣一個順序。通過這種循環(huán)的獲取方式實現(xiàn)廣度優(yōu)先爬行。實現(xiàn)的策略是:先獲取初始 URL 對應(yīng) HTML 代碼里所有的 URLs。 爬行策略分析圖 因為本論文實現(xiàn)的爬蟲程序的初衷是盡可能遍歷某一站點所有的頁面。而線程 2 同時也會下載它獲取到的 URL 2 對應(yīng)的 HTML 代碼,解析出 URLs 加入到等待隊列中。假設(shè)線程 1 從 URL 隊列中獲取一條任務(wù) URL 1,然后它會下載對應(yīng)的 HTML,解析出里面包含 URLs,然后第四章 系統(tǒng)實現(xiàn)17再將這些 URLs 加入到 URL 隊列中去。每個 SPIDER 線程都會獨立的去完成獲取 URLs 的任務(wù),并將獲取到的URLs 加入一個公共的 URL 等待隊列中。因為在這一過程中每一個線程都有自己的堆棧,而當(dāng)一個方法調(diào)用它自身時,它們需要使用同一個堆棧。本系統(tǒng)中使用了非遞歸的程序設(shè)計方法。將初始 URLs 加入到等待隊列是否為非法 URL創(chuàng)建啟動爬蟲線程從 URL 等待隊列獲取任務(wù)URL下載 URL 對應(yīng)的 HTML 代碼將相對地址轉(zhuǎn)換為絕對地址解析 HTML,獲取 URLs將 URLs 加入到URL 等待隊列是否為絕對地址是否為重復(fù)電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文16第四章 系統(tǒng)分析與設(shè)計 SPIDER 構(gòu)造分析構(gòu)造 SPIDER 程序有兩種方式:(1)把 SPIDER 程序設(shè)計為遞歸的程序;(2)編寫一個非遞歸的程序,它要維護一個要訪問的網(wǎng)頁列表。再判斷這些 URL 是否已經(jīng)被下載到,如果沒有則加入到 URL 等待隊列。然后根據(jù) URL 下載網(wǎng)頁,然后解析網(wǎng)頁,獲取超鏈接 URLs。 SPIDER 工作過程①將給定的初始 URL 加入到 URL 等待隊列。UrlParse 類:用于解析 HTML,獲取并過濾 URL。SPIDERManager 類:該類用于控制 SPIDERWorker 線程。 秒的速度下載 Web 頁面, 平均將會產(chǎn)生 2022 多個 URL [12] , 因此簡單的采用內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲這些 URL 隊列有一定的問題, 系統(tǒng)沒有足夠的內(nèi)存空間。每一個 SPIDER 任務(wù)執(zhí)行端關(guān)聯(lián)一個站點,一個線程下載一個基于 URL 鏈接的頁面, 并進行 Web 頁面解析, 得到站內(nèi) URL 和發(fā)現(xiàn)新站點 URL 另外,將URL 隊列持久化到數(shù)據(jù)庫, 因此在 SPIDER 任務(wù)執(zhí)行端以外 Down 掉后, 能夠斷點續(xù)傳.SPIDER 客戶端線程間的協(xié)調(diào)通信采用 Java 的線程同步技術(shù) synchronized,在數(shù)據(jù)服務(wù)端中對 URL 進行緩存提高了系統(tǒng)處理速度. SPIDER 的任務(wù)執(zhí)行和任務(wù)調(diào)度端都需要維持一個 URL 隊列: 任務(wù)執(zhí)行端的 URL 隊列中存儲了站內(nèi)URL。當(dāng) SPIDER 程序訪問到一個網(wǎng)頁,必須進行以下幾項基本處理:抽取網(wǎng)頁中包含的文本;抽取網(wǎng)頁中包含的 URL,并將其區(qū)分為網(wǎng)站內(nèi) URL 或網(wǎng)站外URL。所以我們限制 SPIDER 每次工作只訪問一個站點。為了達到上述目的,一個 SPIDER 必須被設(shè)計成多線程的,A 個線程并發(fā)地在網(wǎng)絡(luò)上協(xié)同工作,才有可能在盡可能短的時間內(nèi)遍歷完網(wǎng)絡(luò)中的網(wǎng)頁。Authority 方法的搜索方法,Authority 表示一個頁面被其它頁面引用的數(shù)量, 即該頁面的入度值. Hub 表示一個 Web 頁面指向其它頁面的數(shù)量, 即該頁面的出度值. 算法如下: 將查詢 q 提交給傳統(tǒng)的基于關(guān)鍵字匹配的搜索引擎. 搜索引擎返回很多網(wǎng)頁, 從中取前 n 個網(wǎng)頁作為根集, 用 S S 中加入被 S 引用的網(wǎng)頁和引用 S 的網(wǎng)頁將 S 擴展成一個更
點擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1