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

正文內容

基于廣度優(yōu)先算法的多線程網絡爬蟲畢業(yè)設計-資料下載頁

2025-06-30 14:07本頁面

【導讀】來說,都必須應用在互聯(lián)網上,必須在一個INTERNET環(huán)境下才能使用。行信息交互,這樣開發(fā)局域網通信就有了必要性。本文提出了局域網信息交互的需求,并詳細對網絡協(xié)議TCP/IP協(xié)議族進行了介紹和研究,如TCP,UDP,廣播等相關技術。通過網絡爬蟲不僅能夠為搜索引擎采集網。絡信息,而且可以作為定向信息采集器,定向采集某些網站下的特定信息,如招聘信息,本文通過JAVA實現了一個基于廣度優(yōu)先算法的多線程爬蟲程序。程,以及如何實現多線程;系統(tǒng)實現過程中的數據存儲;網頁信息解析等。將解析的網頁存入XML文檔。

  

【正文】 一種對于網絡編程提供良好支持的語言,使用 Java 語言進行網絡編程將是一件比較輕松的工作。 和網絡編程有關的基 本 API 位于 包中,該包中包含了基本的網絡編程實現,該包是網絡編程的基礎。該包中既包含基礎的網絡編程類,也包含封裝后的專 門處理WEB 相關的處理類。在本章中,將只介紹基礎的網絡編程類。 IAddress 類。該類的功能是代表一個 IP 地址,并且將 IP 地址和域名相關的操作方法包含在該類的內部。 沈陽理工大學學士學位論文 19 按照前面的介紹,網絡通訊的方式有 TCP 和 UDP 兩種,其中 TCP 方式的網絡通訊是指在通訊的過程中保持連接,有點類似于打電話,只需要撥打一次號碼 (建立一次網絡連接 ),就可以多次通話 (多次傳輸數據 )。這樣方式在 實際的網絡編程中,由于傳輸可靠,類似于打電話,如果甲給乙打電話,乙說沒有聽清楚讓甲重復一遍,直到聽清楚為止,實際的網絡傳輸也是這樣,如果發(fā)送的一方發(fā)送的數據接收方覺得有問題,則網絡底層會自動要求發(fā)送方重發(fā),直到接收方收到為止。 在 Java 語言中,對于 TCP 方式的網絡編程提供了良好的支持,在實際實現時,以 類代表客戶端連接,以 類代表服務器端連接。在進行網絡編程時,底層網絡通訊的細節(jié)已經實現了比較高的封裝,所以在程序員實際編程時,只需要指定 IP 地址和端口號碼就可以建立連接了。正是由于這種高度的封裝,一方面簡化了 Java 語言網絡編程的難度,另外也使得使用 Java 語言進行網絡編程時無法深入到網絡的底層,所以使用 Java 語言進行網絡底層系統(tǒng)編程很困難,具體點說, Java語言無法實現底層的網絡嗅探以及獲得 IP 包結構等信息。但是由于 Java 語言的網絡編程比較簡單,所以還是獲得了廣泛的使用。 在使用 TCP 方式進行網絡編程時,需要按照前面介紹的網絡編程的步驟進行,下面分別介紹一下在 Java 語言中客戶端和服務器端的實現步驟。 在客戶端網絡編程中,首先需要建立連 接,在 Java API 中以 類的對象代表網絡連接,所以建立客戶端網絡連接,也就是創(chuàng)建 Socket 類型的對象,該對象代表網絡連接,示例如下: Socket socket1 = new Socket(“”,10000)。 Socket socket2 = new Socket(“”,80)。 上面的代碼中, socket1 實現的是連接到 IP 地址是 的計算機的 10000號端口,而 socket2 實現的是連接到域名是 的計算機的 80 號端口,至于底層網絡如何實現建立連接,對于程序員來說是完全透明的。如果建立連接時,本機網絡不通,或服務器端程序未開啟,則會拋出異常。 連接一旦建立,則完成了客戶端編程的第一步,緊接著的步驟就是按照“請求 響應”模型進行網絡數據交換,在 Java 語言中,數據傳輸功能由 Java IO 實現,也就是說只需要從連接中獲得輸入流和輸出流即可,然后將需要發(fā)送的數據寫入連接對象的輸出流中,在發(fā)送完成以后從輸入流中讀取數據即可。示例代碼如下: OutputStream os = ()。 //獲得輸出流 沈陽理工大學學士學位論文 20 InputStream is = ()。 //獲得輸入流 上面的代碼中,分別從 socket1 這個連接對象獲得了輸出流和輸入流對象,在整個網絡編程中,后續(xù)的數據交換就變成了 IO 操作,也就是遵循“請求 響應”模型的規(guī)定,先向輸出流中寫入數據,這些數據會被系統(tǒng)發(fā)送出去,然后在從輸入流中讀取服務器端的回饋信息,這樣就完成了一次資料交換過 程,當然這個資料交換過程可以多次進行。這里獲得的只是最基本的輸出流和輸入流對象,還可以根據前面學習到的 IO 知識,使用流的嵌套將這些獲得到的基本流對象轉換成需要的裝飾流對象,從而方便數據的操作。 最后當數據交換完成以后,關閉網絡連接,釋放網絡連接占用的系統(tǒng)端口和內存等資源,完成網絡操作,示例代碼如 : ()。 沈陽理工大學學士學位論文 21 3 系 統(tǒng)軟 件 設計 系 統(tǒng)軟 件概述 軟件主要功能是為,為需要保密的一些工作,提供一個在不需要上網機的情況下,可以通過訪問一個雙 網卡的服務器(一個連接局域網,一個鏈接萬維網)實現從網上下載資料,訪問百度查詢資料,提高單位信息的保密性,和限制員工上網的情況 Eclipse 軟 件介 紹 Eclipse Eclipse 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是, Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具( Java Development Kit, JDK)。 是一個開放源代碼的、基于 Java 的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過 插件 組件構建開發(fā)環(huán)境。幸運的是, Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具( Java Development Kit, JDK)。 雖然大多數用戶很樂于將 Eclipse 當作 Java 集成開發(fā)環(huán)境( IDE)來使用,但 Eclipse 的目標卻不僅限于此。 Eclipse 還包括插件開發(fā)環(huán)境( Plugin Development Environment, PDE),這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣東西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。 [1] 這種平等和一致性并不僅限于 Java 開發(fā)工具。盡管 Eclipse 是使用 Java 語言開發(fā)的,但它的用途并不限于 Java 語言;例如,支持諸如 C/C++、 COBOL、 PHP 等編程語言的插件已經可用,或預計將會推出。 Eclipse 框架還可用來作為與軟件開發(fā)無關的其它應用程序類型的基礎,比如 內容管理系統(tǒng) 。 基于 Eclipse 的應用程序的一個突出例子是 IBM Rational Software Architect,它構成了 IBM Java 開發(fā)工具系列的基礎。 Eclipse 是著名的跨平臺的自由 集成開發(fā)環(huán)境 ( IDE)。最初主要用來 Java 語言 開沈陽理工大學學士學位論文 22 發(fā),但是目前亦有人通過插件使其作為其它計算機語言比如 C++和 Python 的開發(fā)工具。Eclipse 的本身只是一個框架平臺,但是眾多插件的支持使得 Eclipse 擁有其它功能相對固定的 IDE 軟件很難具有的靈活性。許多軟件開發(fā)商以 Eclipse 為框架開發(fā)自己的 IDE。[3] Eclipse 最初由 OTI 和 IBM 兩家公司的 IDE 產品開發(fā)組創(chuàng)建,起始于 1999 年 4 月。IBM 提供了最初的 Eclipse 代碼基礎,包括 Platform、 JDT 和 PDE。目前由 IBM 牽頭,圍繞著 Eclipse 項目已經發(fā)展成為了一個龐大的 Eclipse 聯(lián)盟,有 150 多家軟件公司參與到 Eclipse 項目中,其中包括 Borland、 Rational Software、 Red Hat 及 Sybase 等。 Eclipse是一個開發(fā)源碼項目,它其實是 Visual Age for Java 的替代品,其接口跟先前的 Visual Age for Java 差不多,但由于其開放源碼,任何人都可以免費得到,并可以 在此基礎上開發(fā)各自的插件,因此越來越受人們關注。近期還有包括 Oracle 在內的許多大公司也紛紛加入了該項目,并宣稱 Eclipse 將來能成為可進行任何語言開發(fā)的 IDE 集大成者,使用者只需下載各種語言的插件即可。 服 務 器端 設計 網本 頁 解析部分 從文本文 檔 中直接讀取 URL: 首先 ,讀取從客戶端傳來的 TXT 文 檔 ,每次讀一行,每行的內容為一個完 整的 URL。為了逐行讀取 URL 需要申請一個 FileReader 類型變量和一個 Bufferedreader類型變量。 FileReader 類型 :用來讀取字符文件的便捷類。此類的構造方法假定默認字符編碼和默認字節(jié)緩沖區(qū)大小都是適當的。要自己指定這些值,可以先在 FileInputStream 上構造一個 InputStreamReader。 FileReader 用于讀取字符流。 Bufferedreader 類 型 :從 字符 輸 入流中 讀 取文本, 緩沖 各 個 字符, 從 而提供字符、 數組 和行的高效 讀 取。 可以指定 緩沖區(qū) 的大小,或者可使用默 認 的大小。大多 數 情 況 下,默認 值就足 夠 大了。 沈陽理工大學學士學位論文 23 通常, Reader 所作的每 個讀 取 請 求都 會導 致 對 基 礎 字符或字 節(jié) 流 進 行相 應 的 讀 取 請 求。因此,建 議 用 BufferedReader 包 裝 所有其 read() 操作可能 開銷 很高的 Reader(如 FileReader 和 InputStreamReader)。例如, BufferedReader in = new BufferedReader(new FileReader())。 將緩沖 指定 檔 的 輸 入。如果 沒 有 緩沖 , 則 每次 調 用 read() 或 readLine() 都 會導 致 從 文件中 讀 取字 節(jié) ,并 將 其 轉換為 字符后返回,而 這 是極其低效的。 可以 對 使用 DataInputStream 進 行按原文 輸 入的程序 進 行本地化,方法是用合適的 BufferedReader 替 換 每 個 DataInputStream。 如下代 碼 : BufferedReader reader = new BufferedReader(new FileReader(fp))。 初始化一 個 Bufferedreader 類 型的 變 量 reader 首先 將 文文件存 儲 地址(字符串) 轉換 成文件路 徑 ,使文件 內 容可 讀 ,如果文件路 徑違 法(不是常 規(guī) 檔 類 型或者 檔 不存在) 會拋出異常。如果文件路 徑 合法,文件 內 容合法, 內 容可 讀 取,初始化 Bufferedreader 類 型變 量 ,使文件 內 容可逐行被 讀 取。 如下代碼: String strTemp While( (strTemp = ()) != null); 可以獲得一行文本內容,讀取之后自動跳到下一行。當讀取內容為空時,判斷文 檔 讀取結束。 獲得 URL后,調用函數 strHtml = (strUrl, 60 * 1000, utf8, null, proxy)。 getHtmlText函數: public static String getHtmlText(String strUrl, int timeout,String strEnCoding, String cookies, Proxy proxy) strUrl 網址字符串 timeout 超時設置 strEnCoding 網頁編碼 cookies 網頁 cookies Cookies是我們?yōu)g覽的網站傳輸到用戶計算機硬盤中的文本文件或內存中的數據,可以當沈陽理工大學學士學位論文 24 作緩存來記,就是你第一次打開某網站然后關了在開一下相對第一次會快點,因為第一次的記錄在 COOKIES里儲存了,第二次在開那就直接可以調可它這樣就會快點! Proxy 代理設置 獲得網頁源代碼首先要獲得網頁鏈接: 將 String 類型的變量 strURL 轉換為 URL 類型: URL url = new URL(strUrl)。 URL 有三部分組成 : 協(xié)議, 域名 , 所在目錄的超級鏈接。 為了使用個多的 API 自帶的函數,將 url轉換成 HttpURLConnection 類型。 代碼: Connection = (HttpURLConnection) ()。 此 處的 Connection 對象實際上是根據 URL 的請求協(xié)議 (此處是 )生成的URLConnection 類的子類 HttpURLConnection, 故此處最好將其轉化為HttpURLConnection 類型的對象 ,以便用到 HttpURLConnection 更多的 API. 返回一個 URLConnection 對象,它表示到 URL 所引用的遠程對象的連接。 每次調用此 URL 的協(xié)議處理程序的 openConnection 方法都打開一個新的連接。 真正建立連接 發(fā)送連接請求: InputStream urlStream = ()。 InputStream此抽象類是表示字節(jié)輸入流的所有類的超類。程序可以從中連續(xù)讀取字節(jié)的對象叫輸入流,用 InputStream類來描述所有輸入流的抽象概念。 調用 HttpUR
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1