【正文】
照擴展規(guī)則是否能夠擴展,如果能則產(chǎn)生一個新結(jié)點。否則,如果新結(jié)點未曾在隊列中出現(xiàn)過,則將它加入到隊列尾。如果新結(jié)點是目標結(jié)點,則搜索成功,程序結(jié)束;若新結(jié)點不是目標結(jié)點,則回到第( 1)步,再從隊列頭取出結(jié)點進行擴展 ......。 網(wǎng)絡(luò)爬蟲的主題相關(guān)度判斷 主題爬蟲的系統(tǒng)組成最初考慮是對頁面的過濾,不像普通爬蟲對所有頁面的鏈接進行處理,先對頁面與受限領(lǐng)域的主題相關(guān)度進行分析,只有當其主題相關(guān)度符合要求時才處理該頁面中的鏈接,因為如果該頁面和本領(lǐng)域比較相關(guān),它所包含的鏈接和領(lǐng)域相關(guān)的幾率也較大,這樣提高了爬行精度,雖然會遺漏少數(shù)頁面,但綜合效果是令人滿意的。 10 主題蜘蛛將網(wǎng)頁下載到本地后,需要使用基于內(nèi)容的主題判別方法計算該網(wǎng)頁的主題相關(guān)度值,主題相關(guān)度 低于某一閾值的網(wǎng)頁被丟棄。 在網(wǎng)頁 HTML 代碼中,網(wǎng)頁標題位于標簽之間。當然這種一般原則并不是固定不變的,在實際工作中可能會有一定的變化,但是無論如何變化,總體上仍然會遵照這種規(guī)律 [12]。因為一般的公司名稱(或者品牌名稱)中可能不包含核心業(yè)務(wù)的關(guān)鍵詞,在搜索結(jié)果排名中將處于不利地位。所以應(yīng)當確保在網(wǎng)站的標題標簽中包含了最重要的關(guān)鍵詞,即應(yīng)圍繞最重要的關(guān)鍵詞來決定網(wǎng)頁標題的內(nèi)容。在實際操作中 ,網(wǎng)頁標題不宜過短或過長。搜索引擎在進行搜索的時候,搜索結(jié)果的內(nèi)容一般是網(wǎng)頁標題、網(wǎng)頁摘要信息和鏈接,要引起用戶的關(guān)注,高度總結(jié)了網(wǎng)頁內(nèi)容的標題至關(guān)重要。戴爾的首頁標題中不但涵蓋了最重要的公司信息,而且還包括 公司的主要產(chǎn)品,這就是核心關(guān)鍵詞,當用“筆記本電腦”、“臺式電腦”這些關(guān)鍵詞在谷歌中進行搜索時,戴爾公司的網(wǎng)頁都排在第一屏的前幾條位置。同樣的情況也包括鏈接關(guān)鍵詞與實際內(nèi)容不符的情 況。 B。 : A=4 B+C。 網(wǎng)絡(luò)爬蟲的概要設(shè)計 本網(wǎng)絡(luò)爬蟲的開發(fā)目的,通過網(wǎng)絡(luò)爬蟲技術(shù)一個自動提取網(wǎng) 頁的程序,實現(xiàn)搜索引擎從自己想要訪問的網(wǎng)上下載網(wǎng)頁,再根據(jù)已下載的網(wǎng)頁上繼續(xù)訪問其它的網(wǎng)頁,并將其下載直到滿足用戶的需求。如圖37 所示。 信息。 本網(wǎng)絡(luò)爬蟲最終將設(shè)計成一個能夠自動讀寫配置文件并且在后臺自動執(zhí)行的網(wǎng)絡(luò)爬蟲程序。 URL配置文件 URL配置文件列表 臨 界 區(qū) 互聯(lián)網(wǎng) 線程 1 搜索元URL 如 線程 2 搜索元URL 如 線程 N 13 圖 33 網(wǎng)絡(luò)爬蟲工作流程圖 開始從配置文件中讀取初始URL 作為源 URL獲取網(wǎng)頁以正則表達式過濾網(wǎng)頁標簽提取目標 URL滿足條件停止結(jié)束根據(jù)寬度有限算法搜索目標URL 網(wǎng)絡(luò)蜘蛛循環(huán)爬行 14 第四章 網(wǎng)絡(luò)爬蟲模型的設(shè)計和實現(xiàn) 網(wǎng)絡(luò)爬蟲總體設(shè)計 根據(jù)本網(wǎng)絡(luò)爬蟲的概要設(shè)計本網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,根據(jù)設(shè)定的主題判斷是否與主題相關(guān),再根據(jù)已 下載的網(wǎng)頁上繼續(xù)訪問其它的網(wǎng)頁,并將其下載直到滿足用戶的需求。 將待爬取 URL 列表對應(yīng)的 URL 的網(wǎng)頁代碼提取出來。 ,從網(wǎng)頁中某個鏈接出發(fā),訪問該鏈接網(wǎng)頁上的所有鏈接,訪問完成后,再通過遞歸算法實現(xiàn)下一層的訪問,重復(fù)以上步驟。 網(wǎng)絡(luò)爬蟲具體設(shè)計 爬取網(wǎng)頁 主要用到的技術(shù)如下: 繼承 HTMLEditorKit 類,改寫其中的 getParser()屬性protect 為 public,用下列函數(shù)爬取網(wǎng)頁: public class XXXXX extends HTMLEditorKit { public getParser() { return ()。 URLConnection url_C = ()。 (10000)。 , BufferedReader 讀取,并且將網(wǎng)頁內(nèi)容存儲為字符串。 // 得到某一網(wǎng)頁上的所有鏈接 protected VectorString links = new VectorString()。 // 得到網(wǎng)頁上的正文文本 protected String paragraphText = new String()。 protected String encode = new String()。 } public String getEncode() { return encode。 } // 獲得該網(wǎng)頁的所有鏈接 public Vector getLinks() { return links。 判斷相關(guān)度 算法實現(xiàn)步驟和算法描述: 題集合匹配,并通過詞頻計算來得到與主題向量維數(shù)相等的標題向量和正文向量。 C。 ,設(shè)定相關(guān)度閾值為 2,網(wǎng)頁與主題的相關(guān)度 A2,則認為該網(wǎng)頁與主題相關(guān)的。 保存網(wǎng)頁信息 URL 連接。 PagePro類。 private int Port。 private int ContentLength。 private String Url。 。 多線程的實現(xiàn) 設(shè)計為 4個線程同時進行工作。 2. 對每個 URL 進行分析,判斷相關(guān)度。 第 i 個線程對所有 URL 列表中序列為第 0+4i URL 的進行同步操作,其中對儲存所有 URL 的列表執(zhí)行 synchronized (all_URL)操作。 整體流程 爬蟲代碼文件構(gòu)成如圖 41: 圖 41 代碼結(jié)構(gòu)構(gòu)成截圖 這個類是改寫 getParser()方法為public 是根據(jù)輸入 URL獲取網(wǎng)頁文檔 是 繼承 ParserCallback 獲得網(wǎng)頁內(nèi)容 是判斷主題與網(wǎng)頁內(nèi)容的相關(guān)性 是對網(wǎng)頁主題和正文進行分詞 19 是下載網(wǎng)頁所用, 是為 生成存儲對象。 第二步:調(diào)用 獲得網(wǎng)頁下面所有的 URL,同時去除重復(fù)的部分。 第四步:調(diào)用 , 得到每個 URL對應(yīng)的網(wǎng)頁內(nèi)容與給定主題的閾值,大于給定值則相關(guān),小于給定值則不相關(guān),丟棄該 URL。 20 第五章 測試 設(shè)定只爬取前 5 個網(wǎng)頁,程序運行后的界面如圖 51 圖 51 測試圖 1 預(yù)設(shè)目錄為, D: test 按下 START 后,查看目錄,可見如圖 52: 21 圖 52 測試圖 2 查看數(shù)據(jù)庫可見,如圖 53: 圖 53 測試圖 3 測試 Ping 功能,分別對正確網(wǎng)址 ping 和不正確網(wǎng)址 ping,如圖 54 22 圖 54 測試圖 4 圖 55 測試圖 5 23 圖 56 測試圖 6 24 第六章 總結(jié)和展望 2021 年 3 月,我開始了我的畢業(yè)論文工作,時至今日,論文基本完成。歷經(jīng)了幾個月的奮戰(zhàn),緊張而又充實的畢業(yè)設(shè)計終于落下了帷幕。 3月初,在與導(dǎo)師的交流討論中我的題目定了下來,是面向主題的網(wǎng)絡(luò)爬蟲。我將這一困難告訴了導(dǎo)師,在導(dǎo)師細心的指導(dǎo)下,終于使我對自己現(xiàn)在的工作方向和方法有了掌握。我在學校圖書館,大工圖書館搜集資料,還在網(wǎng)上查找各類相關(guān)資料,將這些寶貴的資料全部記在筆記本上,盡量使我的資料完整、精確、數(shù)量多,這有利于論文的撰寫。 4月初,資料已經(jīng)查找完畢了,我開始著手論文的寫作。在大家的幫助下,困難一個一個解決掉,論文也慢慢成型。 5 月開始相關(guān)代碼編寫工作。 深入了解并掌握數(shù)據(jù)庫基礎(chǔ)知識,挖掘出數(shù)據(jù)庫課程中的難點和重點,對于其中的難點,要充分考慮學生的學習能力,幫助學生以一種最容易接受的方式掌握知識。在設(shè)計平臺中,要注意平臺的可行性和有效性,選擇既重要又適合以學習軟件 形式出現(xiàn)的知識點作為材料,參考優(yōu)秀的國內(nèi)外學習輔助平臺,又考慮到數(shù)據(jù)庫課程的特殊性。在整個過程中,我學到了新知識,增長了見識。 腳踏實地,認真嚴謹,實事求是的學習態(tài)度,不怕困難、堅持不懈、吃苦耐勞的精神是我在這次設(shè)計中最大的收益。 在這次畢業(yè)設(shè)計中也使我們的同學關(guān)系更進一步了,同學之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對我們更好的理解知識,所以在這里非常感謝幫助我的同學。在我的學業(yè)和論文的研究工作中無不傾注著老師們辛勤的汗水和心 血。從尊敬的導(dǎo)師身上,我不僅學到了扎實、寬廣的專業(yè)知識,也學到了做人的道理。 26 參考文獻 [1]Winter.中文搜索引擎技術(shù)解密:網(wǎng)絡(luò)蜘蛛 [M].北京:人民郵電出版社,2021 年. [2]Sergey 等. The Anatomy of a LargeScale Hypertextual Web Search Engine [M].北京:清華大學出版社, 1998 年. [3]Wisenut. WiseNut Search Engine white paper [M].北京:中國電力出版社, 2021 年. [4]Gary Stevens. TCPIP協(xié)議詳解卷 3: TCP事務(wù)協(xié)議,HTTP, NNTP 和 UNIX 域協(xié)議 [M].北京:機械工業(yè)出版社, 2021 年 1 月 . [5]羅剛 王振東 . 自己動手寫網(wǎng)絡(luò)爬蟲 [M].北京:清華大學出版社, 2021 年 10月 . [6]李曉明 , 閆宏飛 , 王繼民 . 搜索引擎:原理、技術(shù)與系統(tǒng) —— 華夏英才基金學術(shù)文庫 [M].北京: 科學出版社 , 2021 年 04 月 . 27 外文資料 ABSTRACT Crawling the web is deceptively simple: the basic algorithm is (a)Fetch a page (b) Parse it to extract all linked URLs (c) For all the URLs not seen before, repeat (a)–(c). However, the size of the web (estimated at over 4 billion pages) and its rate of change (estimated at 7% per week) move this plan from a trivial programming exercise to a serious algorithmic and system design challenge. Indeed, these two factors alone imply that for a reasonably fresh and plete crawl of the web, step (a) must be executed about a thousand times per second, and thus the membership test (c) must be done well over ten thousand times per second against a set too large to store in main memory. This requires a distributed architecture, which further plicates the membership test. A crucial way to speed up the test is to cache, that is, to store in main memory a (dynamic) subset of the “seen” URLs. The main goal of this paper is to carefully investigate several URL caching techniques for web crawling. We consider both practical algorithms: random replacement, static cache, LRU, and CLOCK, and theoretical limits: clairvoyant caching and infinite cache. We performed about 1,800 simulations using these algorithms with various cache sizes,