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

正文內(nèi)容

基于廣度優(yōu)先算法的多線程網(wǎng)絡(luò)爬蟲畢業(yè)設(shè)計-文庫吧在線文庫

2025-08-24 14:07上一頁面

下一頁面
  

【正文】 的一個指針。這比較適合于小型的網(wǎng)站,因為如果太多文件都放在根目錄下的話,制作和維護(hù)起來比較麻煩。 在因特網(wǎng)的 歷 史上, 統(tǒng) 一 資 源定位符 的發(fā) 明是一 個 非?;?礎(chǔ) 的步 驟 。 無休止的跳轉(zhuǎn)。沈陽理工大學(xué)學(xué)士學(xué)位論文 3 如果未 開啟 , 則無 法 進(jìn) 行 訪問 , 訪問頁 面 顯 示的也不 會正 常, 這 種方式 會讓 蜘蛛 無 法 進(jìn)行 訪問 。 現(xiàn) 今,網(wǎng) 絡(luò) 爬蟲主要分 為通 用爬蟲和聚焦爬蟲 兩類 。同年 4 月,斯坦福( Stanford)大 學(xué)最為 著名的 兩 名博士生,美籍 華人楊 致 遠(yuǎn)( Gerry Yang)和 David Filo 共同 創(chuàng)辦了 Yahoo 公司,并成功地使搜索引擎的概念深入人心。與 Wanderer 相 對應(yīng) , Martin Kosher 于 1993 年 10 月 創(chuàng) 建了 ALIWEB,它是 Archie 的 HTTP 版本。由于 Archie 深受 歡 迎,受其 啟發(fā), Nevada System Computing Services 大 學(xué) 于 1993 年 開發(fā) 了一 個 Gopher( Gopher FAQ)搜索工具 Veronica( Veronica FAQ)。; Socket programming。 本文通過 JAVA 實現(xiàn)了一個基于廣度優(yōu)先算法的多線程爬蟲程序。有時候單位內(nèi)部的員工,同學(xué),在沒有互聯(lián)網(wǎng)環(huán)境下或因 其他原因希望不用 INTERNET 就可以進(jìn)行信息交互,這樣開發(fā)局域網(wǎng)通信就有了必要 性。 將解析的網(wǎng)頁存入 XML 文檔。然而伴 隨 互 聯(lián) 網(wǎng)井 噴 性 的發(fā) 展,普通網(wǎng) 絡(luò) 用 戶 想找到自己所需的 數(shù)據(jù)簡 直如同在 數(shù) 據(jù)的海洋里 撈針 , 為滿 足大 眾 信 息檢索 需求的 專業(yè) 搜索網(wǎng)站便 應(yīng)運 而生了。 當(dāng)時 ,“機器人”一 詞在編 程者中十分流行。 直到一些 編 程者提出了 這樣 的 設(shè) 想,既然所有網(wǎng) 頁 都可能有 連 向其它網(wǎng)站的 鏈接 ,沈陽理工大學(xué)學(xué)士學(xué)位論文 2 那么 從 跟 蹤 一 個 網(wǎng)站的 鏈接開始 ,就有可能 檢索 整 個 互 聯(lián) 網(wǎng)。像 國 外的 Google, 國內(nèi) 的百度, 這樣 的搜索引擎巨擘由于掌握的大多 數(shù) 的入口流量,成 為互聯(lián) 網(wǎng)世界的霸主, 并帶來了 巨大的商 業(yè) 價值。與通用爬蟲 (general purpose web crawler)不同,聚焦爬蟲并不追求大的覆 蓋 ,而 將 目 標(biāo)定為 抓取與某一特定主 題內(nèi) 容相 關(guān)的 網(wǎng) 頁 , 為面 向主 題的 用 戶 查 詢 準(zhǔn) 備數(shù) 據(jù) 資 源。 動態(tài) URL。通 過實現(xiàn)此爬蟲程序可以定 點 搜集某一站 點 的 URLs,如果需要搜集其它信息,可以在解析 URLs的同 時 ,解析 獲 取相 應(yīng) 信息 沈陽理工大學(xué)學(xué)士學(xué)位論文 4 2 總體設(shè)計方案 系 統(tǒng)設(shè)計 方案 本設(shè)計主要是通過在 eclipse 軟件環(huán)境中進(jìn)行 ,設(shè)計過程中 首先 服務(wù)器端 獲得網(wǎng)頁URL, URL 的獲得途徑有從客戶端獲得的已經(jīng)形成的 URL,和解析網(wǎng)站獲得的更新的URL 兩種途徑, 然后 根據(jù) URL 連接該網(wǎng)頁,獲取網(wǎng)頁源代碼, 獲取網(wǎng)頁源代碼中需要的網(wǎng)頁內(nèi)容,去除多余的標(biāo)簽,空格,最后形成 XML 文檔, 服務(wù)器端的還包含獲得 IP代理,因為反復(fù)解析同一個網(wǎng)站,網(wǎng)站的防火墻會讓本地 IP 無法訪問該網(wǎng)站,所以我們需要用到 IP 代理循環(huán)訪問網(wǎng)站解決這個問題,服務(wù)器端還可以閱本地文件的模塊,方便文件閱讀的 客戶端主要是過濾本地的文檔與服務(wù)器端進(jìn)行信息交互,傳送需要解析的 URL,獲得已經(jīng)解析的網(wǎng)頁源代碼 所形成的 XML 文檔 。 統(tǒng) 一 資 源定位符是 統(tǒng) 一 資 源 標(biāo) 志符的一 個下 種。比較好的情況是邏輯結(jié)構(gòu)與前面的樹 型物理結(jié)構(gòu)相吻合。 HTTP 協(xié)議簡介 超文本傳輸協(xié)議 (HTTPHypertext transfer protocol) 是分布式,協(xié)作式,超媒體系統(tǒng)應(yīng)用之間的通信協(xié)議。請求方法常用的有 GET、 HEAD、 POST。 無狀態(tài): HTTP 協(xié)議是無狀態(tài)協(xié)議。 HEAD 請求獲取由 RequestURI 所標(biāo)識的資源的響應(yīng)消息報頭。 GET 一般用于 獲 取 /查 詢資 源信息;而 POST 一般用于更新 資 源信息。 3xx: 復(fù)位向 — 要完成請求必須進(jìn)行更進(jìn)一步的操作。 503 Service Unavailable 服務(wù)器當(dāng)前不能夠處理客戶端的請求,在一段時間之后,服務(wù)器可能會恢復(fù)正常。 沈陽理工大學(xué)學(xué)士學(xué)位論文 10 作為單個順序控制流,線程必須在運行的程序中得到自己運行的資源,如必須有自己的執(zhí)行棧和程序計數(shù)器。 圖 單線程程序示意圖 圖 多線程程序示意圖 有些程序中需要多個控制流并行執(zhí)行。要使兩個循環(huán)同時執(zhí)行,需要編寫多線程的程序。還有其它很多使用多線程的好處,這里就不在累述??梢孕蜗蟮睦斫鉃?,在一個 JAVA 程序內(nèi)部虛擬了多臺計算機,每臺計算機對應(yīng)一個線程,有自己的 CPU, 可以獲取所需的代碼和數(shù)據(jù),因此能獨立執(zhí)行任務(wù),相互間還可以共享代碼和數(shù)據(jù)。 沈陽理工大學(xué)學(xué)士學(xué)位論文 12 Thread 類實現(xiàn)了 Runnable 接口,因此 Thread 對象也是可運行對象。 public void run() 線程的線程體。 通常,我們可以將一個類繼承 Thread,然后,覆蓋 Thread 中的 run()方法,這樣讓這個類本身也就成了線程。其中, Running 狀態(tài)并非屬于 JAVA規(guī)范中定義的線程狀態(tài),也就是說,在 JAVA 規(guī)范中,并沒有將運行 ( Running)狀態(tài)真正的設(shè)置為一個狀態(tài),它屬于可運行狀態(tài)的一種。 2. 就緒狀態(tài) (Runnable) 一個新創(chuàng)建的線程并不自動開始運行,要執(zhí)行線程,必須調(diào)用線程的 start()方法。對多個處于就緒狀態(tài)的線程是由 Java 運行時系統(tǒng)的線程調(diào)度程序 (thread scheduler)來調(diào)度的。本例子中,線程運行結(jié)束的條件是 clockThread 為 null,而在小應(yīng)用程序的 stop()方法中,將 clockThread 賦值為 null。 while(i100){ i++。 JAVA 提沈陽理工大學(xué)學(xué)士學(xué)位論文 16 供了多種機制以實現(xiàn)線程同步。 synchronized 關(guān)鍵詞實現(xiàn)的基本操作是把每個需要線程同步的部分定義為一個臨界區(qū),在臨界區(qū)中同一時刻只有一個線程被執(zhí)行。即通信 雙 方一方作 為服 務(wù) 器等待客 戶 提出 請 求并予以 響應(yīng) 。它使用32 位地址。 TCP 的可靠連接得益于它的三次握手原理。在建立網(wǎng)絡(luò)連接時需要指定連接到的服務(wù)器 IP 地址和端口號。一般在服務(wù)器端編程中,當(dāng)獲得連接時,需要開啟專門的線程處理該連接,每個連接都由獨立的線程實現(xiàn)。該包中既包含基礎(chǔ)的網(wǎng)絡(luò)編程類,也包含封裝后的專 門處理WEB 相關(guān)的處理類。正是由于這種高度的封裝,一方面簡化了 Java 語言網(wǎng)絡(luò)編程的難度,另外也使得使用 Java 語言進(jìn)行網(wǎng)絡(luò)編程時無法深入到網(wǎng)絡(luò)的底層,所以使用 Java 語言進(jìn)行網(wǎng)絡(luò)底層系統(tǒng)編程很困難,具體點說, Java語言無法實現(xiàn)底層的網(wǎng)絡(luò)嗅探以及獲得 IP 包結(jié)構(gòu)等信息。示例代碼如下: OutputStream os = ()。 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。 Eclipse 框架還可用來作為與軟件開發(fā)無關(guān)的其它應(yīng)用程序類型的基礎(chǔ),比如 內(nèi)容管理系統(tǒng) 。目前由 IBM 牽頭,圍繞著 Eclipse 項目已經(jīng)發(fā)展成為了一個龐大的 Eclipse 聯(lián)盟,有 150 多家軟件公司參與到 Eclipse 項目中,其中包括 Borland、 Rational Software、 Red Hat 及 Sybase 等。 FileReader 用于讀取字符流。如果 沒 有 緩沖 , 則 每次 調(diào) 用 read() 或 readLine() 都 會導(dǎo) 致 從 文件中 讀 取字 節(jié) ,并 將 其 轉(zhuǎn)換為 字符后返回,而 這 是極其低效的。 getHtmlText函數(shù): public static String getHtmlText(String strUrl, int timeout,String strEnCoding, String cookies, Proxy proxy) strUrl 網(wǎng)址字符串 timeout 超時設(shè)置 strEnCoding 網(wǎng)頁編碼 cookies 網(wǎng)頁 cookies Cookies是我們?yōu)g覽的網(wǎng)站傳輸?shù)接脩粲嬎銠C硬盤中的文本文件或內(nèi)存中的數(shù)據(jù),可以當(dāng)沈陽理工大學(xué)學(xué)士學(xué)位論文 24 作緩存來記,就是你第一次打開某網(wǎng)站然后關(guān)了在開一下相對第一次會快點,因為第一次的記錄在 COOKIES里儲存了,第二次在開那就直接可以調(diào)可它這樣就會快點! Proxy 代理設(shè)置 獲得網(wǎng)頁源代碼首先要獲得網(wǎng)頁鏈接: 將 String 類型的變量 strURL 轉(zhuǎn)換為 URL 類型: URL url = new URL(strUrl)。程序可以從中連續(xù)讀取字節(jié)的對象叫輸入流,用 InputStream類來描述所有輸入流的抽象概念。 此 處的 Connection 對象實際上是根據(jù) URL 的請求協(xié)議 (此處是 )生成的URLConnection 類的子類 HttpURLConnection, 故此處最好將其轉(zhuǎn)化為HttpURLConnection 類型的對象 ,以便用到 HttpURLConnection 更多的 API. 返回一個 URLConnection 對象,它表示到 URL 所引用的遠(yuǎn)程對象的連接。如果文件路 徑 合法,文件 內(nèi) 容合法, 內(nèi) 容可 讀 取,初始化 Bufferedreader 類 型變 量 ,使文件 內(nèi) 容可逐行被 讀 取。 沈陽理工大學(xué)學(xué)士學(xué)位論文 23 通常, Reader 所作的每 個讀 取 請 求都 會導(dǎo) 致 對 基 礎(chǔ) 字符或字 節(jié) 流 進(jìn) 行相 應(yīng) 的 讀 取 請 求。為了逐行讀取 URL 需要申請一個 FileReader 類型變量和一個 Bufferedreader類型變量。Eclipse 的本身只是一個框架平臺,但是眾多插件的支持使得 Eclipse 擁有其它功能相對固定的 IDE 軟件很難具有的靈活性。 Eclipse 還包括插件開發(fā)環(huán)境( Plugin Development Environment, PDE),這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。 最后當(dāng)數(shù)據(jù)交換完成以后,關(guān)閉網(wǎng)絡(luò)連接,釋放網(wǎng)絡(luò)連接占用的系統(tǒng)端口和內(nèi)存等資源,完成網(wǎng)絡(luò)操作,示例代碼如 : ()。 Socket socket2 = new Socket(“”,80)。 沈陽理工大學(xué)學(xué)士學(xué)位論文 19 按照前面的介紹,網(wǎng)絡(luò)通訊的方式有 TCP 和 UDP 兩種,其中 TCP 方式的網(wǎng)絡(luò)通訊是指在通訊的過程中保持連接,有點類似于打電話,只需要撥打一次號碼 (建立一次網(wǎng)絡(luò)連接 ),就可以多次通話 (多次傳輸數(shù)據(jù) )。實質(zhì)上,服務(wù)器端獲得的連接和客戶端創(chuàng)建的連接是一樣的,只是數(shù)據(jù)交換的步驟不同。根據(jù)邏輯需要,可以進(jìn)行無限次的資料交換。當(dāng)然, B/S 結(jié)構(gòu)的編程中只需要實現(xiàn)服務(wù)器端即可。 TCP 是一個面向連接的協(xié)議,為用戶進(jìn)程提供可靠的全雙工字節(jié)流。 發(fā) 送方和接收方的成 對 的 兩個 socket 之沈陽理工大學(xué)學(xué)士學(xué)位論文 17 間 必 須 建立 連 接,以便在 TCP 協(xié)議 的基 礎(chǔ) 上 進(jìn) 行通信, 當(dāng) 一 個 socket(通常都是 server socket)等待建立 連 接 時 ,另一 個 socket 可以要求 進(jìn) 行 連 接,一旦 這兩個 socket 連 接起來 ,它 們 就可以 進(jìn) 行 雙 向 數(shù) 據(jù) 傳輸 , 雙 方都可以 進(jìn) 行 發(fā) 送或接收操作。網(wǎng) 絡(luò)編 程中有 兩個 主要的 問題 ,一 個 是如何準(zhǔn)確的定位網(wǎng) 絡(luò) 上一臺或多臺主機,另一 個 就是找到主機后如何可靠高效的 進(jìn) 行 數(shù) 據(jù) 傳輸 。所以 JAVA 中的每個對象都有自己的鎖。線程調(diào)度程序根據(jù)調(diào)度策略來調(diào)度不同的線程,調(diào)用線程的 run 方法給已經(jīng)注冊的各個線程以執(zhí)行的機會,被調(diào)度執(zhí)行的線程進(jìn)入運行( Running)狀態(tài)。 } 程序不能像終止小應(yīng)用程序那樣通過調(diào)用一個方法來結(jié)束線程 (小應(yīng)用程序通過調(diào)用 stop()方法結(jié)束小應(yīng)用程序的運行 )。 } catch (InterruptedException e){} } 4. 阻塞狀態(tài) (Blocked) 線程運行過程中,可能由于各種原因進(jìn)入阻塞狀態(tài)。當(dāng) start()方法返回后,線程 就處于就緒狀態(tài)。 } } 當(dāng)該語句執(zhí)行后 clockThread 就處于新建狀態(tài)。 我們也可以通過實現(xiàn) Runnable 接口并實現(xiàn)接口中定義的唯一方法 run(),可以創(chuàng)建一個線程。 public static void yield() 使當(dāng)前執(zhí)行的線程暫停執(zhí)行,允許其它線程執(zhí)行。 public String getName() 返回線程名。 Java
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1