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

正文內(nèi)容

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

2025-07-29 02:26上一頁面

下一頁面
  

【正文】 入和置換功能,能從邏輯上對內(nèi)存容量加以擴充的一種儲存器系統(tǒng)。所以 JAVA 中的每個對象都有自己的鎖。線程調(diào)度程序會根據(jù)調(diào)度情況,將正在運行中的線程設(shè)置為 Runnable 狀態(tài),例如,有一個比當(dāng)前運行狀態(tài)線程更高運行等級的線程進(jìn)入 Runnable 狀態(tài),就可能將當(dāng)前運行的線程從 Running 狀態(tài)“踢出”,讓它回到 Runnable 狀態(tài)。 JAVA 中的線程的生命周期JAVA 的線程從產(chǎn)生到消失,可分為 5 種狀態(tài):新建(New),可運行(Runnable),運行( Running),阻塞(Blocked)以及死亡(Dead)。創(chuàng)建一個隸屬于 group 線程組,目標(biāo)為 target 的線程。創(chuàng)建一個線程。可以形象的理解為,在一個 JAVA 程序內(nèi)部虛擬了多臺計算機,每臺計算機對應(yīng)一個線程,有自己的 CPU,可以獲取所需的代碼和數(shù)據(jù),因此能獨立執(zhí)行任務(wù),相互間還可以共用代碼和數(shù)據(jù)。我們?nèi)说母兄獣r間可能以秒來計算。一般來說,這些操作系統(tǒng)都支持多進(jìn)程操作。它為搜索引擎從互聯(lián)網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成部分。在建立搜索引擎的過程中,搜集網(wǎng)頁是非常重要的一個環(huán)節(jié)。 why to use multithreading, and how to implement multithread。摘要Ⅰ摘要網(wǎng)絡(luò)爬蟲是一種自動搜集互聯(lián)網(wǎng)信息的程序。 data structure。爬蟲程序就是用來搜集網(wǎng)頁的程序。爬蟲程序的實現(xiàn)策略,運行效率直接影響搜索引擎的搜索結(jié)果。所謂多進(jìn)程,就是讓系統(tǒng)(好像)同時運行多個程序。而對于 CPU 而言,它的時間是以毫秒來計算的,從我們?nèi)庋劭磥?,它們就是一個連續(xù)的動作。JAVA 的線程是通過 類來實現(xiàn)的,它內(nèi)第二章 相關(guān)技術(shù)介紹3部實現(xiàn)了虛擬 CPU 的功能,能夠接收和處理傳遞給它的代碼和數(shù)據(jù),并提供了獨立的運行控制功能。Thread(Runnable target)。通常,我們可以將一個類繼承 Thread,然后,覆蓋 Thread 中的 run()方法,這樣讓這個類本身也就成了線程。其中,Running 狀態(tài)并非屬于 JAVA 規(guī)范中定義的線程狀態(tài),也就是說,在 JAVA 規(guī)范中,并沒有將運行(Running)狀態(tài)真正的設(shè)置為一個狀態(tài),它屬于可運行狀態(tài)的一種。 JAVA 線程的結(jié)束方式線程會以以下三種方式之一結(jié)束:線程到達(dá)其 run()方法的末尾;第二章 相關(guān)技術(shù)介紹5線程拋出一個未捕獲到的 Exception 或 Error;另一個線程調(diào)用一個 Deprecated 的 stop()方法。這樣使它在共享的線程之間可以相互協(xié)調(diào)。其關(guān)鍵在于允許一個作業(yè)只裝入部分的頁或段就可以啟動運行,當(dāng)作業(yè)運行的時候在內(nèi)存中找不到所需要的頁或段的時候,就會發(fā)生請求調(diào)入,而從外存中找到的頁或段將會置換內(nèi)存中暫時不運行的頁面到外存。如果實現(xiàn)去重,一定是建立一個 URL 存儲庫,并且已經(jīng)下載完成的 URL 在進(jìn)行檢測時候,要加載到內(nèi)存中,在內(nèi)存中進(jìn)行檢測一定會比直接從磁盤上讀取速度快很多。當(dāng)需要進(jìn)行檢測 URL 是否重復(fù)的時候,只需要將這個 URL 進(jìn)行Hash 映射,如果得到的地址已經(jīng)存在,說明已經(jīng)被下載過,放棄下載,否則,將該 URL 及其 Hash 地址作為鍵值對存放到 Hash 表中。在 Java 中有一個 Map 類非常好,你可以將壓縮后的 URL 串作為 Key,而將 Boolean 作為 Value 進(jìn)行存儲,然后將工作中的 Map 在爬蟲停止工作后序列化到本地磁盤上;當(dāng)下一次啟動新的爬蟲任務(wù)的時候,再將這個 Map 反序列化到內(nèi)存中,供爬蟲進(jìn)行 URL 去重檢測。原理是:cache 的所有位置都用雙向鏈表連接起來,當(dāng)一個位置被命中后,就將通過調(diào)整鏈表的指向?qū)⒃撐恢谜{(diào)整到鏈表的頭位置,新加入的內(nèi)容直接放在鏈表的頭上。getHeaderField()方法僅僅獲得服務(wù)器返回的頭標(biāo)志,其通信開銷是最小的,因此在下載網(wǎng)頁前進(jìn)行此測試,不僅能減小網(wǎng)絡(luò)流量,而且能提高程序效率。為了達(dá)到上述目的,一個 SPIDER 必須被設(shè)計成多線程的,A 個線程并發(fā)地在網(wǎng)絡(luò)上協(xié)同工作,才有可能在盡可能短的時間內(nèi)遍歷完網(wǎng)絡(luò)中的網(wǎng)頁。 秒的速度下載 Web 頁面, 平均將會產(chǎn)生 2022 多個 URL [12] , 因此簡單的采用內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲這些 URL 隊列有一定的問題, 系統(tǒng)沒有足夠的內(nèi)存空間。然后根據(jù) URL 下載網(wǎng)頁,然后解析網(wǎng)頁,獲取超鏈接 URLs。因為在這一過程中每一個線程都有自己的堆棧,而當(dāng)一個方法調(diào)用它自身時,它們需要使用同一個堆棧。 爬行策略分析圖 因為本論文實現(xiàn)的爬蟲程序的初衷是盡可能遍歷某一站點所有的頁面。當(dāng)這一層 URLs 全部解析完后,再開始下一層 URLs。 URL 抽取,解析和保存 URL 抽取通過觀察研究 HTML 代碼,我們可以知道。這些情況就需要更細(xì)致的考慮,才能獲取。為了把爬行限制在同一站點內(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). 進(jì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)存空間。我采用了第二種方法:public class SpiderWorker implements Runnable {在這個類中必須要實現(xiàn)重寫 run()這個方法。具體方法是調(diào)用 getHtml(String sourse_url)這個方法:HttpURLConnection connection = null。in = new InputStreamReader(())。對于一個 HTML 代碼,我尋找其中的 href=字符串,然后記錄它的下表i。這步以后原字符串又被截取為“ target=”開始,我們可以繼續(xù)檢索 href=標(biāo)簽。// 當(dāng) href= 后以 開頭的情況if (39。}在每個 URL 被截取出來之后,需要判斷這些 URL 是相對地址,還是絕對地址。下面是一段實行代碼。// if ((.)) {String str = (0,(.))。這個 hash 碼的長度相對較小,可以節(jié)省內(nèi)存開銷。private final Lock lock = new ReentrantLock()。return (key, value)。}boolean b = ((url))。當(dāng)加入 URL 緩存太長時,調(diào)用下面的方法,將緩存區(qū)的內(nèi)容加入到數(shù)據(jù)庫。while ((0).size() 0) {String url = (String)(0).get(0)。)。下面是具體實現(xiàn)的 JAVA 代碼:public synchronized void waitQueueAdd() {String sql = SELECT * FROM middlequeue LIMIT 25。我建立了 2 個表,分別為 middlequeue 和databasequeue。// 建立到MySQL的連接conn = (jdbc: root, root)。我分析 HTML 代碼。所以因該被過濾掉。電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文32第七章 結(jié)論從課題著手到現(xiàn)在論文完成,經(jīng)歷了 3 個月的時間。所以在以后的時間,我將繼續(xù)研究網(wǎng)絡(luò)爬蟲技術(shù)。希望在這一課題上達(dá)到另一個高度。對網(wǎng)絡(luò)爬蟲中比較主流的技術(shù)都有了更深的理解。第三個被檢索到的 href 標(biāo)簽為:這是一段很標(biāo)準(zhǔn)的 URL,它的 host 為 并且可以得到 HTML 代碼。程序?qū)⑵滢D(zhuǎn)化為了,絕對地址。}return conn。Middlequeue 用于 URL 等待隊列的主存儲部分。ResultSet res = null。}當(dāng)取出緩存區(qū)空以后,需要將數(shù)據(jù)庫的內(nèi)容加入到緩存區(qū)。(insert into middlequeue (url) values(39。調(diào)用 waitQueueDecrease()這個函數(shù),將存入緩存里的數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)庫。return b。}}電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文26}有了這個 map 以后,我就會用 URL 到里面去碰撞。 = maxCapacity。第五章 系統(tǒng)實現(xiàn)25然后這個 URL 消重隊列的維護(hù)是同時 LRULinkedHashMap 來實現(xiàn)的。.39。// 如果 url中包含以下 字符串,則不加入隊列if (().contains(.css)|| ().contains(.rar) || ()|| (.zip) || (javascript)) {return false。我們需要將其轉(zhuǎn)化為絕對地址。 == (0)) {html_text = (1)。我們就去檢索空格和標(biāo)簽,以下標(biāo)較小的字符作為截取 URL 的結(jié)束標(biāo)記。截取過后的 href 標(biāo)記就剔除它與它前面的部分,以便而后的操作可以繼續(xù)檢索 href 標(biāo)記,直到正個 HTML 代碼中所有的 href 標(biāo)記都被解析過后,操作終止。String c。BufferedReader br = null。在這個循環(huán)里,首先會向 URL 等待隊列里請求一個 URL。URL 等待隊列設(shè)計成三段式:第一段為一個 List,用來加入新得到的 URL。所以需要判斷 URL 為絕對地址,還是相對地址。我們需要獲取 HTML 代碼中的 URLs,就可以通過尋找 href 標(biāo)簽來達(dá)到目的。電子科技大學(xué)成都學(xué)院本科畢業(yè)設(shè)計論文18圖 圖 列舉了不同時間段時,URL 等待隊列的存儲狀態(tài)。實現(xiàn)的策略是:先獲取初始 URL 對應(yīng) HTML 代碼里所有的 URLs。每個 SPIDER 線程都會獨立的去完成獲取 URLs 的任務(wù),并將獲取到的URLs 加入一個公共的 URL 等待隊列中。再判斷這些 URL 是否已經(jīng)被下載到,如果沒有則加入到 URL 等待隊列。SPIDERManager 類:該類用于控制 SPIDERWorker 線程。所以我們限制 SPIDER 每次工作只訪問一個站點?!∨佬胁呗詼\析 寬度或深度優(yōu)先搜索策略搜索引擎所用的第一代網(wǎng)絡(luò)爬蟲主要是基于傳統(tǒng)的圖算法, 如寬度優(yōu)先或深度優(yōu)先算法來索引整個 Web, 一個核心的 U RL 集被用來作為一個種子集合, 這種算法遞歸的跟蹤超鏈接到其它頁面, 而通常不管頁面的內(nèi)容, 因為最終的目標(biāo)是這種跟蹤能覆蓋整個 Web. 這種策略通常用在通用搜索引擎中,因為通用搜索引擎獲得的網(wǎng)頁越多越好, 沒有特定的要求. 寬度優(yōu)先搜索算法寬度優(yōu)先搜索算法(又稱廣度優(yōu)先搜索) 是最簡便的圖的搜索算法之一 , 這一算法也是很多重要的圖的算法的原型. Dijkstra 單源最短路徑算法和 Prim 最的寬度遍歷樹的節(jié)點, 如果發(fā)現(xiàn)目標(biāo) , 則算法中止 . 該算法的設(shè)計和實現(xiàn)相對簡單, 屬于盲目搜索 . 在目前為覆蓋盡可能多的網(wǎng)頁, 一般使用寬度優(yōu)先搜索方法. 第二章 相關(guān)技術(shù)介紹9也有很多研究將寬度優(yōu)先搜索策略應(yīng)用于聚焦爬蟲中. 其基本思想是認(rèn)為與初始 U RL 在一定鏈接距離內(nèi)的網(wǎng)頁具有主題相關(guān)性的概率很大. 另外一種方法是將寬度優(yōu)先搜索與網(wǎng)頁過濾技術(shù)結(jié)合使用, 先用廣度優(yōu)先策略抓取網(wǎng)頁, 再將其中無關(guān)的網(wǎng)頁過濾掉. 這些方法的缺點在于, 隨著抓取網(wǎng)頁的增多 , 大量的無關(guān)網(wǎng)頁將被下載并過濾, 算法的效率將變低. 深度優(yōu)先搜索深度優(yōu)先搜索所遵循的搜索策略是盡可能“深”地搜索圖. 在深度優(yōu)先搜索中, 對于最新發(fā)現(xiàn)的頂點, 如果它還有以此為起點而未探測到的邊 , 就沿此邊繼續(xù)漢下去. 當(dāng)結(jié)點 v 的所有邊都己被探尋過, 搜索將回溯到發(fā)現(xiàn)結(jié)點 v 有那條邊的始結(jié)點. 這一過程一直進(jìn)行到已發(fā)現(xiàn)從源結(jié)點可達(dá)的所有結(jié)點為止. 如果還存在未被發(fā)現(xiàn)的結(jié)點, 則選擇其中一個作為源結(jié)點并重復(fù)以上過程, 整個進(jìn)程反復(fù)進(jìn)行直到所有結(jié)點都被發(fā)現(xiàn)為止. 深度優(yōu)先在很多情況下會導(dǎo)致爬蟲的陷入( trapped) 問題 , 所以它既不是完備的, 也不是最優(yōu)的. 聚焦搜索策略基于第一代網(wǎng)絡(luò)爬蟲的搜索引擎抓取的網(wǎng)頁一般少于 1 000 000 個網(wǎng)頁, 極少重新搜集網(wǎng)頁并去刷新索引. 而且其檢索速度非常慢, 一般都要等待 10 s 甚至更長的時間. 隨著網(wǎng)頁頁信息的指數(shù)級增長及動態(tài)變化, 這些通用搜索引擎的局限性越來越大, 隨著科學(xué)技術(shù)的發(fā)展, 定向抓取相關(guān)網(wǎng)頁資源的聚焦爬蟲便應(yīng), 根據(jù)“最好優(yōu)先原則”進(jìn)行訪問, 快速、有效地獲得更多的與主題相關(guān)的頁面, 主要通過內(nèi)容和Web 的鏈接結(jié)構(gòu)來指導(dǎo)進(jìn)一步的頁面抓取 [ 2 ]. 聚焦爬蟲會給它所下載下來的頁面分配一個評價分, 然后根據(jù)得分排序, 最后插入到一個隊列中. 最好的下一個搜索將通過對彈出隊列中的第一個頁面進(jìn)行分析而執(zhí)行, 這種策略保證爬蟲能優(yōu)先跟蹤那些最有可能鏈接到目標(biāo)頁面的頁面. 決定網(wǎng)絡(luò)爬蟲搜索策略的關(guān)鍵是如何評價鏈接價值, 即鏈接價值的計算方法, 不同的價值評價方法計算出的鏈接的
點擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1