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

正文內(nèi)容

基于多線程的網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-免費(fèi)閱讀

  

【正文】 程序的啟動(dòng)界面如圖61圖61 程序起始界面開始時(shí)使用默認(rèn)參數(shù),運(yùn)行:工作線程數(shù)為5,訪問數(shù)量不限制(1)。默認(rèn)的時(shí)當(dāng)待訪問的URL達(dá)到500,已經(jīng)訪問的URL達(dá)到200,或者待訪問URL數(shù)量小于100的時(shí)候才進(jìn)行數(shù)據(jù)庫(kù)操作。 也就是通過發(fā)射源 向數(shù)據(jù)庫(kù)傳遞sql語(yǔ)句Statement stmt = ()。 // 該 url 放入到已訪問的 URL 中 (visitUrl)。主要代碼如下。 //根據(jù)生成的文件路徑保存文件 (new FileOutputStream(new File(filePath)))。 /* HTTP GET 請(qǐng)求 */ try { HttpResponse response = (Get)。 !(url)) (url)。 } // 移除訪問過的URL public synchronized static void removeVisitedUrl(String url) { (url)。 系統(tǒng)模塊實(shí)現(xiàn) 本節(jié)將結(jié)合代碼分析系統(tǒng)主要模塊的實(shí)現(xiàn)方式。在Java中提供了synchronized 關(guān)鍵字,代表這個(gè)方法加鎖,相當(dāng)于不管哪一個(gè)線程(例如線程A),運(yùn)行到這個(gè)方法時(shí),都要檢查有沒有其它線程B(或者C、 D等)正在用這個(gè)方法,有的話要等正在使用synchronized方法的線程B(或者C 、D)運(yùn)行完這個(gè)方法后再運(yùn)行此線程A,沒有的話,直接運(yùn)行。HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。 算法實(shí)現(xiàn)步驟和算法描述:,并通過詞頻計(jì)算來得到與主題向量維數(shù)相等的標(biāo)題向量和正文向量。HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。 URL保存 因?yàn)榈却齍RLs的數(shù)目非常多,如果全部采用List來存儲(chǔ)非常的占用內(nèi)存空間。所以我們需要過濾掉這些URLs。但是不同的網(wǎng)站href=后面的內(nèi)容有所不同。 將待爬取URL列表對(duì)應(yīng)的URL的網(wǎng)頁(yè)代碼提取出來。 (摘自百度百科[5]) Eclipse基本介紹 Eclipse 是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。Java由四方面組成:Java編程語(yǔ)言、Java類文件格式、Java虛擬機(jī)和Java應(yīng)用程序接口(Java API)。整個(gè)虛線方框里的過程是不斷循環(huán)往復(fù)的,直到優(yōu)先隊(duì)列為空SPIDER要獲取的對(duì)象是存在于網(wǎng)絡(luò)上數(shù)以億計(jì)的網(wǎng)頁(yè),這些網(wǎng)頁(yè)以超鏈接形式互相聯(lián)系在一起,每一網(wǎng)頁(yè)對(duì)應(yīng)一個(gè)超鏈接,也稱統(tǒng)一資源定位符(URL)。 遍歷網(wǎng)絡(luò)本項(xiàng)目要開發(fā)的蜘蛛與Google等大型搜索引擎的蜘蛛不同,它的訪問范圍并不是整個(gè)互聯(lián)網(wǎng),而是用戶指定的一個(gè)或多個(gè)網(wǎng)站,因此蜘蛛在遍歷網(wǎng)絡(luò)的時(shí)候不能夠漫無(wú)邊際的爬行,而是在制定的范圍內(nèi)。如果Web Spider對(duì)網(wǎng)頁(yè)的編碼不加判斷的話,很有可能出現(xiàn)亂碼。做一個(gè)與Google,百度等競(jìng)爭(zhēng)的綜合搜索引擎成功的機(jī)會(huì)微乎其微,而垂直搜索或者比價(jià)服務(wù)或者推薦引擎,機(jī)會(huì)要多得多,這類爬蟲不是什么頁(yè)面都取的,而是只關(guān)心的頁(yè)面,而且只取頁(yè)面上關(guān)心的內(nèi)容,例如提取黃頁(yè)信息,商品價(jià)格信息,還有提取競(jìng)爭(zhēng)對(duì)手 廣告信息的。定義2:主題網(wǎng)絡(luò)爬蟲就是根據(jù)一定的網(wǎng)頁(yè)分析算法過濾與主題無(wú)關(guān)的鏈接,保留主題相關(guān)的鏈接并將其放入待抓取的URL隊(duì)列中;然后根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過程,直到達(dá)到系統(tǒng)的某一條件時(shí)停止。深度優(yōu)先搜索所遵循的搜索策略是盡可能“深”地搜索圖. 在深度優(yōu)先搜索中, 對(duì)于最新發(fā)現(xiàn)的頂點(diǎn), 如果它還有以此為起點(diǎn)而未探測(cè)到的邊, 就沿此邊繼續(xù)下去. 當(dāng)結(jié)點(diǎn)v 的所有邊都己被探尋過,搜索將回溯到發(fā)現(xiàn)結(jié)點(diǎn)v 有那條邊的始結(jié)點(diǎn). 這一過程一直進(jìn)行到已發(fā)現(xiàn)從源結(jié)點(diǎn)可達(dá)的所有結(jié)點(diǎn)為止。具體的算法(1) 頂點(diǎn)V 入隊(duì)列。該算法的設(shè)計(jì)和實(shí)現(xiàn)相對(duì)簡(jiǎn)單, 屬于盲目搜索。普通字符包括大小寫的字母和數(shù)字,而元字符則具有特殊的含義。這里獲得的只是最基本的輸出流和輸入流對(duì)象,還可以根據(jù)前面學(xué)習(xí)到的IO知識(shí),使用流的嵌套將這些獲得到的基本流對(duì)象轉(zhuǎn)換成需要的裝飾流對(duì)象,從而方便數(shù)據(jù)的操作。在客戶端網(wǎng)絡(luò)編程中,首先需要建立連接,在Java ,所以建立客戶端網(wǎng)絡(luò)連接,也就是創(chuàng)建Socket類型的對(duì)象,該對(duì)象代表網(wǎng)絡(luò)連接,示例如下: Socket socket1 = new Socket(“”,10000)。該類的功能是代表一個(gè)IP地址,并且將IP地址和域名相關(guān)的操作方法包含在該類的內(nèi)部。當(dāng)然,服務(wù)器端的數(shù)據(jù)交換也是可以多次進(jìn)行的。服務(wù)器端的編程步驟和客戶端不同,是由四個(gè)步驟實(shí)現(xiàn),依次是:監(jiān)聽端口服務(wù)器端屬于被動(dòng)等待連接,所以服務(wù)器端啟動(dòng)以后,不需要發(fā)起連接,而只需要監(jiān)聽本地計(jì)算機(jī)的某個(gè)固定端口即可。(一)客戶端網(wǎng)絡(luò)編程步驟客戶端(Client)是指網(wǎng)絡(luò)編程中首先發(fā)起連接的程序,客戶端一般實(shí)現(xiàn)程序界面和基本邏輯實(shí)現(xiàn),在進(jìn)行實(shí)際的客戶端編程時(shí),無(wú)論客戶端復(fù)雜還是簡(jiǎn)單,以及客戶端實(shí)現(xiàn)的方式,客戶端的編程主要由三個(gè)步驟實(shí)現(xiàn):建立網(wǎng)絡(luò)連接客戶端網(wǎng)絡(luò)編程的第一步都是建立網(wǎng)絡(luò)連接。大多數(shù)因特網(wǎng)應(yīng)用程序使用TCP。IPv4(通常稱之IP)自20世紀(jì)80年代早期以來一直是網(wǎng)際協(xié)議族的主力協(xié)議。TCP/IP 定義了電子設(shè)備如何連入因特網(wǎng),以及數(shù)據(jù)如何在它們之間傳輸?shù)臉?biāo)準(zhǔn)。所以JAVA中的每個(gè)對(duì)象都有自己的鎖。 線程調(diào)度程序會(huì)根據(jù)調(diào)度情況,將正在運(yùn)行中的線程設(shè)置為Runnable狀態(tài),例如,有一個(gè)比當(dāng)前運(yùn)行狀態(tài)線程更高運(yùn)行等級(jí)的線程進(jìn)入Runnable狀態(tài),就可能將當(dāng)前運(yùn)行的線程從Running狀態(tài)“踢出”,讓它回到Runnable狀態(tài)。 JAVA的線程從產(chǎn)生到消失,可分為5種狀態(tài):新建(New),可運(yùn)行(Runnable),運(yùn)行(Running),阻塞(Blocked)以及死亡(Dead)。創(chuàng)建一個(gè)隸屬于group線程組,目標(biāo)為target的線程。創(chuàng)建一個(gè)線程。 Java多線程編程計(jì)算機(jī)程序得以執(zhí)行的三個(gè)要素是:CPU,程序代碼,可存取的數(shù)據(jù)。在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。也可以把它理解為代碼運(yùn)行的上下文。所有狀態(tài)碼的第一個(gè)數(shù)字代表了響應(yīng)的五種狀態(tài)之一。HTTP服務(wù)器至少應(yīng)該實(shí)現(xiàn)GET和HEAD方法,其他方法都是可選的。數(shù)據(jù)被包含在請(qǐng)求體中。*39。 無(wú)狀態(tài):HTTP協(xié)議是無(wú)狀態(tài)協(xié)議。請(qǐng)求方法常用的有GET、HEAD、POST。因此 URL 是與因特網(wǎng)相連的機(jī)器上的任何可訪問對(duì)象的一個(gè)指針。這比較適合于小型的網(wǎng)站,因?yàn)槿绻辔募挤旁诟夸浵碌脑?,制作和維護(hù)起來比較麻煩。它最初是由蒂姆動(dòng)態(tài)URL簡(jiǎn)單的說就是帶有問號(hào)、等號(hào)及參數(shù)的網(wǎng)址就是動(dòng)態(tài)URL,動(dòng)態(tài)URL不利于搜索引擎蜘蛛的爬行和抓取。同時(shí),支持根據(jù)語(yǔ)義信息提出的查詢。 研究現(xiàn)狀和發(fā)展趨勢(shì)因?yàn)樗阉饕娴纳虡I(yè)化應(yīng)用帶來了巨大的商業(yè)價(jià)值,所以作為搜索引擎的核心部分的網(wǎng)絡(luò)爬蟲技術(shù),也理所應(yīng)當(dāng)?shù)某蔀榱藝?guó)內(nèi)外研究的熱點(diǎn)。到1993年底,一些基于此原理的搜索引擎開始紛紛涌現(xiàn),但是早期的搜索引擎只是以搜索工具在數(shù)據(jù)庫(kù)中找到匹配信息的先后次序排列搜索結(jié)果,因此毫無(wú)信息關(guān)聯(lián)度可言。電腦“機(jī)器人”(Computer Robot)是指某個(gè)能以人類無(wú)法達(dá)到的速度不間斷地執(zhí)行某項(xiàng)任務(wù)的軟件程序。所有搜索引擎的鼻祖,是1990年由Montreal的McGill University三名學(xué)生(Alan Emtage、Peter Deutsch、Bill Wheelan)發(fā)明的Archie(Archie FAQ)。而本課題的主要就是怎樣更高效的獲取網(wǎng)頁(yè),并通過所給條件篩選得到人們所需要的網(wǎng)頁(yè)。目前幾種比較常用的自動(dòng)獲取資源實(shí)現(xiàn)策略:廣度優(yōu)先的爬蟲程序,Repetitive爬蟲程序,定義爬行爬蟲程序,深層次爬行爬蟲程序。爬蟲程序就是用來獲取網(wǎng)頁(yè)的程序。 Java。實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲關(guān)鍵技術(shù)是對(duì)URL進(jìn)行分析和去重。成都學(xué)院學(xué)士學(xué)位論文(設(shè)計(jì)) 本 科 畢 業(yè) 論 文題 目 基于多線程的網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn) 畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。為使網(wǎng)絡(luò)爬蟲具備更高效的抓取能力,因而使用了多線程技術(shù)。 MultiThreading目 錄緒 論 11 概述 2 研究目的和意義 2 網(wǎng)絡(luò)爬蟲的歷史 2 研究現(xiàn)狀和發(fā)展趨勢(shì) 32 網(wǎng)絡(luò)爬蟲相關(guān)技術(shù) 5 URL 5 HTTP協(xié)議 5 HTTP協(xié)議簡(jiǎn)介 5 HTTP消息的結(jié)構(gòu) 6 請(qǐng)求方法 7 HTTP狀態(tài)代碼 8 Java多線程 8 定義 8 優(yōu)點(diǎn) 8 不足 8 Java多線程編程 9 Java 網(wǎng)絡(luò)編程 11 TCP/IP 11 網(wǎng)絡(luò)編程步驟 11 Java網(wǎng)絡(luò)編程技術(shù) 13 正則表達(dá)式 14 正則表達(dá)式特點(diǎn) 14 15 網(wǎng)頁(yè)搜索策略 15 15 16 163 需求分析和模型設(shè)計(jì) 17 網(wǎng)絡(luò)爬蟲的定義 17 17 系統(tǒng)需求分析 17 下載網(wǎng)頁(yè) 17 分解網(wǎng)頁(yè) 18 遍歷網(wǎng)絡(luò) 18 存儲(chǔ)網(wǎng)頁(yè) 18 模型設(shè)計(jì) 18 數(shù)據(jù)庫(kù)結(jié)構(gòu) 19 技術(shù)選型 20 Java 簡(jiǎn)介 20 eclipse基本介紹 204 網(wǎng)絡(luò)爬蟲模型的總體設(shè)計(jì) 21 網(wǎng)絡(luò)爬蟲總體設(shè)計(jì) 21 URL處理 21 URL抽取 21 URL解析 21 URL判重 22 URL保存 22 網(wǎng)頁(yè)抓取 22 網(wǎng)頁(yè)相關(guān)度 22 什么是網(wǎng)頁(yè)標(biāo)題 22 算法實(shí)現(xiàn)步驟和算法描述: 23 HttpClient 類庫(kù)與Jericho HTML Parser類庫(kù) 23 HttpClient 23 Jericho Html Parser 23 多線程設(shè)計(jì) 245 系統(tǒng)實(shí)現(xiàn) 25 實(shí)現(xiàn)工具 25 系統(tǒng)模塊實(shí)現(xiàn) 25 URL隊(duì)列 25 網(wǎng)頁(yè)下載 26 提取URL 27 Spider類 28 296 系統(tǒng)運(yùn)行測(cè)試 30 系統(tǒng)運(yùn)行測(cè)試 30 系統(tǒng)分析 32結(jié) 論 33參考文獻(xiàn) 34致 謝 3535緒 論隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的日臻成熟并被廣泛的應(yīng)用到社會(huì)生活的各個(gè)領(lǐng)域,網(wǎng)絡(luò)上的信息呈爆炸式增長(zhǎng),并由此誕生了大量的數(shù)據(jù),人類進(jìn)入了一個(gè)“大數(shù)據(jù)時(shí)代”。網(wǎng)絡(luò)爬蟲,是一種按照一定的規(guī)則,自動(dòng)的抓取因特網(wǎng)信息的程序或者腳本。此外,還有根據(jù)概率論進(jìn)行可用Web頁(yè)的數(shù)量估算,?用于評(píng)估互聯(lián)網(wǎng)Web規(guī)模的抽樣爬蟲程序;采用爬行深度、頁(yè)面導(dǎo)入鏈接量分析等方法,限制從程序下載不相關(guān)的Web頁(yè)的選擇性爬行程序等等。隨著互連網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)信息量呈現(xiàn)出爆炸性增長(zhǎng)的趨勢(shì),當(dāng)今這個(gè)時(shí)代被稱為“大數(shù)據(jù)”時(shí)代。Alan Emtage等想到了開發(fā)一個(gè)可以用文件名查找文件的系統(tǒng),于是便有了Archie。由于專門用于檢索信息的“機(jī)器人”程序象蜘蛛一樣在網(wǎng)絡(luò)間爬來爬去,因此, 搜索引擎的“機(jī)器人”程序就被稱為“蜘蛛”程序。而RBSE是第一個(gè)在搜索結(jié)果排列中引入關(guān)鍵字串匹配程度概念的引擎。對(duì)于網(wǎng)絡(luò)爬蟲的研究從上世紀(jì)九十年代就開始了目前爬蟲技術(shù)已經(jīng)相當(dāng)成熟。 網(wǎng)絡(luò)爬蟲的發(fā)展趨勢(shì)隨著AJAX/,如何抓取AJAX等動(dòng)態(tài)頁(yè)面成了搜索引擎急需解決的問題,如果搜索引擎依舊采用“爬”的機(jī)制,是無(wú)法抓取到AJAX頁(yè)面的有效數(shù)據(jù)的。Flash。伯納斯-李發(fā)明用來作為萬(wàn)維網(wǎng)的地址的。而樹型結(jié)構(gòu)的意義是在一級(jí)目錄下分為多個(gè)頻道或者稱之為目錄,然后目錄下面再放上屬于這個(gè)頻道的頁(yè)面,首頁(yè)、頻道首頁(yè)、頻道下的內(nèi)容就好比樹干、樹枝、樹葉的關(guān)系。 URL 的一般形式是:URL的訪問方式://主機(jī):端口/路徑網(wǎng)絡(luò)爬蟲就是通過提取和分析出網(wǎng)頁(yè)中的URL地址,對(duì)相應(yīng)網(wǎng)絡(luò)進(jìn)行爬取。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力。的請(qǐng)求來測(cè)試服務(wù)器的功能性。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。當(dāng)然,所有的方法支持的實(shí)現(xiàn)都應(yīng)當(dāng)符合下述的方法各自的語(yǔ)義定義。而當(dāng)網(wǎng)絡(luò)爬蟲必須根據(jù)返回的狀態(tài)代碼就行相應(yīng)的處理。所以線程基本上是輕量級(jí)的進(jìn)程,它負(fù)責(zé)在單個(gè)程序里執(zhí)行多任務(wù)。在這種情況下可以釋放一些珍貴的資源如內(nèi)存占用等等。在JAVA語(yǔ)言中,多線程的機(jī)制是通過虛擬CPU來實(shí)現(xiàn)的。 Thread(Runnable target)。 通常,我們可以將一個(gè)類繼承Thread,然后,覆蓋Thread中的run()方法,這樣讓這個(gè)類本身也就成了線程。其中,Running狀態(tài)并非屬于JAVA規(guī)范中定義的線程狀態(tài),也就是說,在JAVA規(guī)范中,并沒有將運(yùn)行(Running)狀態(tài)真正的設(shè)置為一個(gè)狀態(tài),它屬于可運(yùn)行狀態(tài)的一種。Java線程會(huì)以以下三種方式之一結(jié)束: ()方法的末尾; ; ()方法。這樣使它在共享的線程之間可以相互協(xié)調(diào)。協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。它使用32位地址。TCP的可靠連接得益于它的三次握手原理。在建立網(wǎng)絡(luò)連接時(shí)需要指定連接到的服務(wù)器的IP地址和端口號(hào),建立完成以后,會(huì)形成一條虛擬的連接,后續(xù)的操作就可以通過該連接實(shí)現(xiàn)數(shù)據(jù)交換了。這個(gè)端口就是服務(wù)器端開放給客戶端的端口,服務(wù)器端程序運(yùn)行的本地計(jì)算機(jī)的IP地址就是服務(wù)器端程序的IP地址。在數(shù)據(jù)交換完成以后,關(guān)閉和客戶端的連接。按照前面的介紹,網(wǎng)絡(luò)通訊的
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1