国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

網(wǎng)站新聞收集系統(tǒng)的設(shè)計與實現(xiàn)

2012-04-29 06:52:37仇兆存
電腦知識與技術(shù) 2012年5期
關(guān)鍵詞:多線程

仇兆存

摘要:為了使用戶更加方便地查看新聞信息,不受時間或是網(wǎng)絡(luò)資源等條件的制約,也可以做為自動生成新聞網(wǎng)頁的新聞類網(wǎng)站提供信息來源,該系統(tǒng)以面向?qū)ο蟮脑O(shè)計思想,采用Java語言,憑借Eclipse3.1的開發(fā)工具,對網(wǎng)站新聞信息進行了搜集。在可移植性和可維護性等方面有較好的體現(xiàn)。其中運用了多線程的方法對新聞信息進行了快速的下載、整理與收集,為用戶查閱新聞信息提供了方便,節(jié)省了大量時間。

關(guān)鍵詞:面象對象;多線程;新聞搜集;正則表達式

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)05-1098-04

The Design and Implementation of News-gathering System for Website

QIU Zhao-cun

(Jiangsu Radio and Television University Jiangdu College, Yangzhou 225200, China)

Abstract: To enable users to more easily view news and information, without the restriction of time or network resources and other condi? tions, the system can provide original information for the news website that can automatically generate news pages. The system relys on the object-oriented design idea, Java language, and the development tools of Eclipse3.1, to gather information for the site. It has better perfor? mance in portability and maintainability and other aspects. The system can realize fast download, arrangement and collection of the news and information by using multi-threaded approach, and make it convenient for users to access news and information.

Key words: object-oriented; multi-threading; news gathering; regular expression

如今,網(wǎng)絡(luò)在人們生活和工作中起著越來越重要的作用,而從網(wǎng)上獲取新聞信息更是成了很多人獲知新聞的主要渠道。如果擁有自己的網(wǎng)站,為了讓更多的人來瀏覽,就必須進行及時更新,可以從那些大的網(wǎng)站中找出想要的新聞信息然后轉(zhuǎn)載過來,然而,這些網(wǎng)站上的信息量巨大,如果僅僅靠人工方式進行機械的拷貝,那將顯得效率太低且繁瑣,其實,我們可以編寫程序讓程序來完成這些工作。

1需求分析

1.1現(xiàn)狀分析

現(xiàn)代人的生活已經(jīng)越來越離不開互聯(lián)網(wǎng)絡(luò)了。我們的語言中已經(jīng)由于網(wǎng)絡(luò)而增加了許多新鮮的血液,通訊交流由于網(wǎng)絡(luò)而變得更加方便快捷,知識的更新速度也由于網(wǎng)絡(luò)而加快……中國互聯(lián)網(wǎng)的發(fā)展迅速,為了對中文信息處理作一些研究,我們需要先從網(wǎng)絡(luò)中收集部分相關(guān)的信息。163和TOM兩個網(wǎng)站的信息量較大,故將這兩個網(wǎng)站作為目標站點,從中收集原始數(shù)據(jù)。

1.2設(shè)計目標

研究目標是:對面向?qū)ο缶幊痰恼麄€過程有一個全面的了解;熟練使用Java語言進行編程,尤其要掌握用Java進行網(wǎng)絡(luò)編程的方法;能在Eclipse環(huán)境中進行Java項目的開發(fā);了解Html標記語言,能通過程序分析找出Html標記當中的超鏈接。

設(shè)計內(nèi)容:網(wǎng)絡(luò)信息收集系統(tǒng)的開發(fā)。首先,通過在硬盤上建一個根目錄,在這個根目錄下新建一個子目錄,子目錄名為程序運行的日期,然后在子目錄下建立163、TOM兩個目錄,在目錄下分別建立政治、體育、財經(jīng)等十個目錄;將163、TOM網(wǎng)站的新聞主頁下載下來,存放在各自的根目錄下;通過分析新聞主頁的Html代碼,找出要下載的超鏈接;再對這些超鏈接進行分析,將其分類并下載下來,分別存放到已經(jīng)建立的目錄下。

1.3平臺選擇

操作系統(tǒng):WindowsXP

開發(fā)語言:Java

開發(fā)平臺:JDK5.0、Eclipse

2系統(tǒng)實現(xiàn)技術(shù)

2.1系統(tǒng)總體結(jié)構(gòu)設(shè)計

本程序中共有兩個包:command和main,command包中的類是實現(xiàn)整個系統(tǒng)功能的類,main包中的類調(diào)用command包中類的方法作為程序的入口。command包中有11個類,分別是Analyze163、AnalyzeTOM、Downloads、DownPath、MainVariable、MkDir、NetSite、NewsPage和SubStr,其中類Analyze163用來對163網(wǎng)站進行分類下載,類AnalyzeTOM用來對TOM網(wǎng)站進行分類下載,類Downloads用來進行單個網(wǎng)頁的下載,類DownPath用來保存各個網(wǎng)站下載的路徑,類MainVariable用來保存程序中要用到的相當于全局變量作用的變量,類MkDir用來建立多個目錄,類NetSite用來對網(wǎng)站進行分析和分類下載,類NewsPage用來分析網(wǎng)站的新聞主頁,類Sub? Str用來截取目標字符串,用正則表達式對截取后的目標字符串進行匹配,并對匹配成功的鏈接進行下載。main包中只有一個類NetInfoCollect,用來作為程序的入口,調(diào)用類NetSite的AnalyzeDown方法對多個網(wǎng)站進行分析并分類下載。

程序流程:由main包的NetInfoCollect類進入程序,NetInfoCollect的main方法調(diào)用類NetSite的AnalyzeDown方法對多個網(wǎng)站進行分析并分類下載,在AnalyzeDown方法中,先調(diào)用類MkDir的Makedirs方法建立要下載網(wǎng)站的下載目錄,再調(diào)用類Downloads的NetPageDown方法下載網(wǎng)站的新聞主頁,并將下載下來的新聞主頁保存到網(wǎng)站的根目錄下,然后調(diào)用NewsPage的AnalyzeNewspage方法對新聞主頁進行分析,找出要下載的超鏈接并保存到網(wǎng)站根目錄的URL.txt文件中,最后調(diào)用Analyze163的StapleDown163方法實現(xiàn)163網(wǎng)站的分類下載,調(diào)用AnalyzeSina的StapleDownSina方法實現(xiàn)SINA網(wǎng)站的分類下載,調(diào)用AnalyzeSohu的StapleDownSohu方法實現(xiàn)SOHU網(wǎng)站的分類下載,調(diào)用AnalyzeTOM的StapleDownTOM方法實現(xiàn)TOM網(wǎng)站的分類下載。程序的流程圖如圖1所示。

圖1程序流程圖

2.2系統(tǒng)中的關(guān)鍵技術(shù)

2.2.1核心技術(shù)

1)正則表達式

正則表達式(regular expression,簡稱regexes)是操作和檢驗字符串數(shù)據(jù)的一種強大的工具,是用來描述字符串集的字符串。在用正則表達式對網(wǎng)頁源文件進行成功匹配后,將得到這個網(wǎng)頁中有用的超鏈接地址,也就是要進行下載的網(wǎng)頁地址,這時就可以調(diào)用進行下載的類將這些匹配成功的網(wǎng)頁下載下來。

2)StringTokenizer類

StringTokenizer類允許應(yīng)用程序?qū)⒆址纸鉃闃擞洠琒tringTokenizer方法不區(qū)分標識符、數(shù)和帶引號的字符串,它們也不識別并跳過注釋。可以在創(chuàng)建時指定,也可以根據(jù)每個標記來指定分隔符(分隔標記的字符)集合。

3)String類

在Java語言中,String類代表字符串。Java程序中的所有字符串字面值(如"abc")都作為此類的實例來實現(xiàn)。

4)輸入與輸出

由于本程序中要將網(wǎng)頁下載下來保存到硬盤中,還要從文件中讀出要下載的鏈接地址,因此輸入輸出也是本程序的一個重點。

①基本輸入/輸出流類

流是數(shù)據(jù)的有序序列,它既可以是未加工的原始二進制數(shù)據(jù),也可以是經(jīng)過一定編碼處理后的符合某種規(guī)定格式的特定數(shù)據(jù),如字節(jié)流序列、字符流序列等。數(shù)據(jù)的性質(zhì)、格式不同,則對流的處理方法也不同,因此,Java的輸入/輸出類庫中有不同的流類來對應(yīng)不同性質(zhì)的輸入/輸出流。在java.io包中基本輸入/輸出流類可按讀寫數(shù)據(jù)的不同類型分為兩種:字節(jié)流和字符流。

②文件的輸入/輸出

Java語言的java.io包中的File類是專門用來管理磁盤文件和目錄的。每個File類的對象表示一個磁盤文件或目錄,其對象屬性中包含了文件或目錄的相關(guān)信息,如文件或目錄的名稱、文件的長度、目錄中所含文件的個數(shù)等。調(diào)用File類的方法則可以完成對文件或目錄的常用管理操作,如創(chuàng)建文件或目錄、刪除文件或目錄、查看文件的有關(guān)信息等。

2.2.2使用到的Java包介紹

1)java.io包

java.io包用來通過數(shù)據(jù)流、序列和文件系統(tǒng)為系統(tǒng)提供輸入輸出。

2)java.net包

java.net包支持TCP/IP網(wǎng)絡(luò)協(xié)議,并包含Socket類及URL相關(guān)的類,是網(wǎng)絡(luò)編程中要使用到的。

3)java.util包

java.util包包含集合框架、遺留的collection類、事件模型、日期和時間設(shè)施、國際化和各種實用工具類(字符串標記生成器、隨機數(shù)生成器和位數(shù)組)。

4)java.text包

java.text包提供以與自然語言無關(guān)的方式來處理文本、日期、數(shù)字和消息的類和接口。

2.3系統(tǒng)各部分的實現(xiàn)方法

2.3.1 command包的設(shè)計與實現(xiàn)

1)MainVariable類的設(shè)計與實現(xiàn)

類MainVariable用來保存程序中要用到的相當于全局變量作用的變量,這個類中只有一個靜態(tài)String變量HOME_PATH,它是整個程序輸出的根目錄,HOME_PATH的值是"C:\MyProgram"字符串。

2)MkDir類的設(shè)計與實現(xiàn)

類MkDir用來建立多個目錄,這個類中要引入java.io包、java.util包和java.text.SimpleDateFormat包,在這個類中包括一個靜態(tài)String變量dirName以及四個靜態(tài)方法formatTime、Makedir、Makedirs和deletePath。其中,靜態(tài)String變量dirName用來保存程序運行日期的字符串形式,它的值是靜態(tài)方法formatTime的返回值,作為日期目錄的目錄名。

3)Downloads類的設(shè)計與實現(xiàn)

類Downloads用來下載網(wǎng)頁,這個類中要引入java.net包和java.io包,這個類中只有一個靜態(tài)方法NetPageDown,它用來下載網(wǎng)頁,它有兩個參數(shù)url和fileName,其中參數(shù)url是要下載的網(wǎng)頁的地址,參數(shù)fileName是下載下來的網(wǎng)頁在硬盤上對應(yīng)的文件。

4)DownPath類的設(shè)計與實現(xiàn)

類DownPath是各個網(wǎng)站下載的路徑,這個類包括十個String變量:tmpPath、Politics、ChinaPolitics、WorldPolitics、Sports、ChinaS? ports、WorldSports、Finance、ChinaFinance、WorldFinance和Society,以及一個DownPath方法。其中,String變量tmpPath是各個網(wǎng)站下載的根目錄,String變量Politics是政治新聞下載目錄,String變量ChinaPolitics是國內(nèi)政治新聞下載目錄等等。方法DownPath用來對下載路徑進行初始化,它有一個參數(shù)net,是要下載的網(wǎng)站的網(wǎng)站名,其它類調(diào)用該方法給上面的十個String變量重新賦值,讓它們指向當前下載的網(wǎng)站的路徑。

5)NewsPage類的設(shè)計與實現(xiàn)

類NewsPage用來分析新聞主頁,這個類中要引入5個包,分別是java.io.BufferedWriter包,java.io.File包,java.io.FileWriter包,ja? va.util.regex.Matcher包和java.util.regex.Pattern包。這個類只有一個靜態(tài)方法AnalyzeNewspage,它用來找出新聞主頁中與正則表達式匹配的鏈接,并將這些鏈接保存到文件中。

6)SubStr類的設(shè)計與實現(xiàn)

類SubStr用來截取目標字符串,用正則表達式對截取后的目標字符串進行匹配,并對匹配成功的鏈接進行下載,這個類中要引入6個包,分別是java.io.File包,java.io.FileInputStream包,java.net.URL包,java.util.StringTokenizer包,java.util.regex.Matcher包和java.util. regex.Pattern包。這個類中有兩個靜態(tài)變量totalNum和downNum,一個初始化方法SubStr,一個靜態(tài)方法getFileToString,一個靜態(tài)方法StapleDown,以及兩個subStr方法。其中,靜態(tài)變量totalNum是要下載的網(wǎng)頁的總數(shù),靜態(tài)變量downNum是已經(jīng)下載的網(wǎng)頁的個數(shù)。

7)AnalyzeSina類的設(shè)計與實現(xiàn)

類AnalyzeSina用來分類下載SINA,這個類要引入三個包,分別是java.net包,java.io包和java.util包。這個類中只有一個靜態(tài)方法StapleDownSina,它用來讀取保存的鏈接,對鏈接進行分類并下載保存到分類后的目錄內(nèi)。

2.3.2 main包的設(shè)計與實現(xiàn)

1)NetInfoCollect類的設(shè)計與實現(xiàn)

類NetInfoCollect調(diào)用類NetSite的AnalyzeDown方法對多個網(wǎng)站進行分析并分類下載,這個類中要引入command包和java.io包,在這個類只有一個方法main方法。首先判斷C盤根目錄下是否有MyProgram目錄,如果沒有則創(chuàng)建,然后調(diào)用類NetSite的Analyze? Down方法對SINA、163、TOM和SOHU四個網(wǎng)站進行分類下載。

3系統(tǒng)測試與評價

3.1測試環(huán)境介紹

操作系統(tǒng):WindowsXP

運行環(huán)境:JRE5.0、Windows命令行

3.2實例測試

首先,在環(huán)境變量path中設(shè)置JDK的bin目錄的位置,再在classpath中設(shè)置程序源文件所在路徑,這里設(shè)置為C:MyProgramInfo?Collectionsrc目錄,打開Windows命令行,在命令行窗口中輸入cd C:MyProgramInfoCollectionsrcmain,改變目錄到main包下,然后輸入javac NetInfoCollect.java,編譯java源文件,再輸入cd..,將路徑改變?yōu)镃:MyProgramInfoCollectionsrc,輸入java main.NetInfoCol? lect運行程序,就可以看到程序的運行情況了。

圖2 TOM網(wǎng)站信息搜集測試

3.3評價分析

這個程序已經(jīng)基本實現(xiàn)了網(wǎng)絡(luò)信息收集的功能,可以對多個網(wǎng)站進行分類下載,但是由于每一個網(wǎng)站要下載的網(wǎng)頁數(shù)目眾多,而且每個網(wǎng)頁下載前先要與網(wǎng)站進行連接等待,因此下載所花費的時間會有一些長,在程序的改進中應(yīng)考慮引入多線程進行下載,減少等待時間,提高下載速度。另外,由于對163網(wǎng)站和TOM網(wǎng)站的分類都是根據(jù)網(wǎng)頁的特征進行人工分類的,因此不能保證所有的網(wǎng)頁都被正確的歸類,但大多數(shù)網(wǎng)頁都能夠劃分到正確的類別當中。

參考文獻:

[1] Eckel B.Java編程思想(英文版)[M].3版.北京:機械工業(yè)出版社,2004.

[2] Gallardo D,Burnette E,McGovern R.Eclipse in Action[M].Manning Publications,2003.

[3]計算機世界網(wǎng).Java正則表達式詳解[EB/OL].[2006-04].http://www.ccw.com.cn/htm/app/aprog/01_7_31_4.asp.

[4]魔法博客天空.正則表達式簡介[EB/OL].[2006-04].http://magichere.blogchina.com/4057133.html.

[5]我要學習網(wǎng).正則表達式的基本語法[EB/OL].(2006-04).http://woyaoxuexi.net/web/PHP/biaoda/200504/27291.html.

[6]朱喜福,林建民,唐永新.Java程序設(shè)計[M].北京:人民郵電出版社,2004.

[7] SUN.JAVA官方在線JDK幫助文檔[EB/OL].[2006-04].http://java.sun.com/j2se/1.5.0/docs/api/.

[8]強鋒科技,陳剛.Eclipse從入門到精通[M].北京:清華大學出版社,2005.

[9] Horstmann C S,Cornell G.JAVA2核心技術(shù)卷I:基礎(chǔ)知識[M].葉乃文,譯.7版.北京:機械工業(yè)出版社,2006.

[10] Arnold K,Gosling J,Holmes D.Java程序設(shè)計語言(英文版)[M].4版.北京:人民郵電出版社,2006.

猜你喜歡
多線程
Java多線程同步機制在網(wǎng)絡(luò)售票系統(tǒng)中的應(yīng)用
科技資訊(2016年29期)2017-02-28 09:30:34
Java并發(fā)工具包對并發(fā)編程的優(yōu)化
基于多線程文件傳輸關(guān)鍵技術(shù)研究與實現(xiàn)
網(wǎng)頁爬蟲技術(shù)的關(guān)鍵技術(shù)研究探索
一種基于多線程的高速磁盤鏡像算法
iOS并發(fā)程序設(shè)計中幾種方法的特點及使用技巧研究
HTM L5 Web WOrker技術(shù)及應(yīng)用研究
電站鍋爐煤粉參數(shù)遠程監(jiān)控系統(tǒng)的軟件設(shè)計與實現(xiàn)
一種高并發(fā)認證服務(wù)器的實現(xiàn)
一種低開銷的并行重復(fù)數(shù)據(jù)刪除算法
軟件導刊(2015年8期)2015-09-18 12:59:11
繁峙县| 三门峡市| 永平县| 习水县| 贵定县| 江阴市| 石家庄市| 宜阳县| 洪洞县| 炎陵县| 西贡区| 宜宾市| 丘北县| 无极县| 乐业县| 崇左市| 贵州省| 玛多县| 青神县| 从化市| 东乡县| 嵊州市| 金塔县| 威海市| 康保县| 江北区| 潜山县| 怀来县| 天门市| 柯坪县| 澄江县| 巴彦县| 扶绥县| 平罗县| 偃师市| 浪卡子县| 田东县| 崇阳县| 缙云县| 杭锦旗| 门源|