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

正文內(nèi)容

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

2025-06-30 14:07本頁面

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

  

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