畢業(yè)論文---微博信息抓取系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  微博信息抓取系統(tǒng)</b></p><p>  【摘要】針對(duì)微博中龐大的數(shù)據(jù)量和用戶關(guān)系群,本文提出并實(shí)現(xiàn)了基于新浪開放平臺(tái)與Oauth2.0的微博信息抓取系統(tǒng)。該系統(tǒng)主要實(shí)現(xiàn)的功能有:(1)微博大廳的滾動(dòng)微博及其評(píng)論的抓取(2)微博用戶的好友及其相互關(guān)系的抓取。通過(guò)線程池和數(shù)據(jù)庫(kù)實(shí)現(xiàn)了微博信息的抓取和存儲(chǔ),并通過(guò)prefuse的API,圖形化的顯示出用戶關(guān)系。從

2、實(shí)際運(yùn)行效果分析,該抓取系統(tǒng)能夠滿足各種SNS應(yīng)用的內(nèi)容填充,及網(wǎng)絡(luò)用戶社會(huì)網(wǎng)絡(luò)關(guān)系分析。</p><p>  【關(guān)鍵詞】Oauth2.0;新浪開放平臺(tái);社會(huì)網(wǎng)絡(luò)關(guān)系;prefuse</p><p><b>  引言</b></p><p><b>  研究背景及意義</b></p><p>  隨

3、著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,中國(guó)迎來(lái)了真正的微博時(shí)代。微博由于其內(nèi)容簡(jiǎn)短,寫作門檻低,發(fā)布渠道便捷化,多樣化,同步化,使得信息生產(chǎn)趨于零時(shí)間。與其他信息交流模式不同,微博最大的特點(diǎn)在于技術(shù)上的便攜性。2009年,3G牌照的發(fā)放標(biāo)志著移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái),移動(dòng)手機(jī)和互聯(lián)網(wǎng)這兩種在中國(guó)發(fā)展最為迅速的媒介開始融合在一起,為微博的快速擴(kuò)張做了技術(shù)上的準(zhǔn)備,與傳統(tǒng)博客相比,微博對(duì)用戶能夠產(chǎn)生很強(qiáng)粘性的原因,就在于其在技術(shù)上無(wú)可比擬的便攜性。用戶可以通過(guò)各

4、種方式登陸微博,發(fā)表微博。尤其是手機(jī)和微博的綁定使得這以新媒介對(duì)微博用戶的接近性滿足了4A的元素,即Anything,anywhere,anyone,anytime。任何用戶可以在任何時(shí)間任何地點(diǎn)發(fā)布任何內(nèi)容。從此,人們的信息交流得到了空前的大解放。微博信息抓取系統(tǒng)通過(guò)開放平臺(tái)的API抓取我們所需要的信息,為各式各樣的SNS[1]社區(qū)應(yīng)用在運(yùn)營(yíng)初期充實(shí)其數(shù)據(jù)量和用戶量,以吸引更多的用戶關(guān)注和使用。SNS社區(qū)交友是現(xiàn)在網(wǎng)絡(luò)用戶之間相互交流

5、的最主要方式。當(dāng)前最流行的SNS網(wǎng)絡(luò)莫過(guò)于開心網(wǎng),人人網(wǎng),以及各大微博了,其中以新浪微博的活躍用戶量最為龐大,本課題主</p><p><b>  本課題主要工作</b></p><p>  本文主要解決的問(wèn)題有抓取新浪微博的微博大廳數(shù)據(jù)已經(jīng)其相關(guān)的評(píng)論和用戶信息。包括新浪微博的Oauth2.0認(rèn)證,通過(guò)調(diào)用新浪微博的API,得到并解析服務(wù)器返回的json文檔,建立相

6、應(yīng)的數(shù)據(jù)庫(kù),儲(chǔ)存在數(shù)據(jù)庫(kù)中。并通過(guò)Prefuse對(duì)抓取的微博用戶好友關(guān)系進(jìn)行了可視化的顯示。實(shí)現(xiàn)全自動(dòng)的抓取、解析、和數(shù)據(jù)存儲(chǔ)過(guò)程。 大大提高了信息收集的工作效率,并大大降低了信息收集的出錯(cuò)率。滿足了企事業(yè)公司對(duì)微博信息的內(nèi)容需求和網(wǎng)絡(luò)用戶的社會(huì)關(guān)系分析。</p><p><b>  新浪微博開放平臺(tái)</b></p><p><b>  微博用戶的授權(quán)認(rèn)證&

7、lt;/b></p><p>  2.1.1 新浪微博應(yīng)用創(chuàng)建</p><p>  新浪微博開放平臺(tái)允許所有微博用戶創(chuàng)建自己的應(yīng)用,用戶只要填寫清楚開發(fā)者的詳細(xì)信息和應(yīng)用的相關(guān)資料就可以創(chuàng)建自己的應(yīng)用了。應(yīng)用創(chuàng)建成功后,開發(fā)者將會(huì)獲得該應(yīng)用的APP KEY和Sercret Key。我們就是通過(guò)這兩個(gè)key進(jìn)行相關(guān)的技術(shù)開發(fā)工作。并且通過(guò)這兩個(gè)key唯一標(biāo)識(shí)我們的應(yīng)用。其新浪微博應(yīng)用創(chuàng)

8、建和發(fā)布的流程圖如圖1所示。</p><p>  圖 1 新浪開放平臺(tái)應(yīng)用創(chuàng)建流程及發(fā)布流程圖</p><p>  2.1.2 OAuth2.0授權(quán)認(rèn)證</p><p>  OAuth2.0是從2006年開始設(shè)計(jì)OAuth[2]協(xié)議的下一個(gè)版本。OAuth(開放授權(quán))是一個(gè)開放標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問(wèn)該用戶在某一網(wǎng)站上存儲(chǔ)的私密的資源(如照片,視頻,聯(lián)系人

9、列表),而無(wú)需將用戶名和密碼提供給第三方應(yīng)用。OAuth允許用戶提供一個(gè)令牌,而不是用戶名和密碼來(lái)訪問(wèn)他們存放在特定服務(wù)提供者的數(shù)據(jù)。每一個(gè)令牌授權(quán)一個(gè)特定的網(wǎng)站(例如,視頻編輯網(wǎng)站)在特定的時(shí)段(例如,接下來(lái)的2小時(shí)內(nèi))內(nèi)訪問(wèn)特定的資源(例如僅僅是某一相冊(cè)中的視頻)。這樣,OAuth允許用戶授權(quán)第三方網(wǎng)站訪問(wèn)他們存儲(chǔ)在另外的服務(wù)提供者上的信息,而不需要分享他們的訪問(wèn)許可或他們數(shù)據(jù)的所有內(nèi)容。</p><p> 

10、 相比于OAuth1.0,OAuth2.0整個(gè)授權(quán)驗(yàn)證流程更加簡(jiǎn)單和安全。也是新浪微博開發(fā)平臺(tái)未來(lái)最主要的用戶驗(yàn)證和授權(quán)方式。使用新的2.0協(xié)議進(jìn)行授權(quán)認(rèn)證。開發(fā)者只需要調(diào)用oauth2/authorize接口引導(dǎo)用戶授權(quán),并在授權(quán)后重定向的網(wǎng)頁(yè)得到code碼后向服務(wù)器oauth2/access_token接口換取access_token,就可以使用這個(gè)access_token調(diào)用新浪微博的API了。</p><p&

11、gt;  其授權(quán)的基本流程如圖2所示:</p><p>  圖 2 OAuth認(rèn)證基本流程</p><p>  雖然2.0的授權(quán)機(jī)制更簡(jiǎn)單安全,但是越安全越說(shuō)明其限制越多,其中access_token的有效期在開發(fā)測(cè)試階段只有24小時(shí)。在24小時(shí)之后就必須重新授權(quán)獲取新的access_token。而新浪微博的一些接口也有訪問(wèn)頻次限制。在軟件開發(fā)測(cè)試階段,通常一個(gè)接口的訪問(wèn)頻次限制在150次

12、/小時(shí),當(dāng)應(yīng)用審核通過(guò)正式發(fā)布以后將會(huì)有更多更大的權(quán)限。其授權(quán)標(biāo)準(zhǔn)也會(huì)有一定的提升,訪問(wèn)頻次的限制將提高,access_token的有效期也會(huì)延長(zhǎng)。當(dāng)然開發(fā)者也可以和開放平臺(tái)申請(qǐng)更高的訪問(wèn)頻次和token有效期,開放平臺(tái)會(huì)根據(jù)你應(yīng)用的類型和規(guī)模審核你的請(qǐng)求。</p><p><b>  新浪微博API</b></p><p>  JSON數(shù)據(jù)交換格式</p>

13、;<p>  JSON(Javascript Object Notation),是一種輕量級(jí)的數(shù)據(jù)交換格式[3] ,它是JavaScript的一個(gè)子集,但它是獨(dú)立于語(yǔ)言的文本格式,易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。它的這些特性使它成為理想的數(shù)據(jù)交換語(yǔ)言。</p><p>  JSON構(gòu)建于兩種結(jié)構(gòu)。一種是鍵值對(duì)的集合形式,一種是值的有序列表。這些結(jié)構(gòu)使得大部分現(xiàn)代計(jì)算機(jī)語(yǔ)言都以某種形式支持

14、它們,這使一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語(yǔ)言之間交換成為可能。與XML比較,JSON在Web數(shù)據(jù)交換處理上的更具優(yōu)勢(shì)。采用JSON來(lái)緩存元數(shù)據(jù),便于存儲(chǔ)復(fù)雜的驗(yàn)證數(shù)據(jù),客戶端容易解析和使用。在具體實(shí)現(xiàn)上,通過(guò)服務(wù)器程序生成JSON存儲(chǔ)驗(yàn)證數(shù)據(jù)和函數(shù),利用AJAX技術(shù)設(shè)計(jì)客戶端函數(shù)來(lái)訪問(wèn)元數(shù)據(jù)以驗(yàn)證用戶輸入。實(shí)現(xiàn)的結(jié)果表明:由于使用JSON存儲(chǔ)復(fù)雜的元數(shù)據(jù)和驗(yàn)證規(guī)則,該方案在保證安全性和可擴(kuò)展性的同時(shí),提高了驗(yàn)證效率。</p&

15、gt;<p>  statuses/public_timeline接口</p><p>  此接口[4]是用于返回最新的公共微博,也就是微博大廳的最新微博。該接口使用的是GET請(qǐng)求方式,返回的是JSON格式的微博數(shù)據(jù)。由于我們使用的是OAuth2.0方式授權(quán),我們的請(qǐng)求參數(shù)將非常簡(jiǎn)單。只需要將之前授權(quán)得到的access_token和需要請(qǐng)求的返回記錄條數(shù)count以及返回結(jié)果的頁(yè)碼page傳給服務(wù)器

16、就可以了。其請(qǐng)求參數(shù)說(shuō)明如表1所示:</p><p>  表 1 public_timeline請(qǐng)求參數(shù)說(shuō)明</p><p>  請(qǐng)求服務(wù)器成功之后會(huì)返回一串JSON格式的數(shù)組。數(shù)組中的每個(gè)元素就是一個(gè)微博信息。它包括了微博內(nèi)容、微博發(fā)表者、微博評(píng)論和轉(zhuǎn)發(fā)次數(shù)等等重要信息。我們將其全部解析出來(lái)存儲(chǔ)在我們的數(shù)據(jù)庫(kù)中。該接口返回?cái)?shù)據(jù)說(shuō)明如表2所示:</p><p> 

17、 表 2 public_timeline接口返回字段說(shuō)明</p><p>  comments/show接口</p><p>  此接口[5]是根據(jù)微博ID返回該微博的評(píng)論列表。該接口和上面的timeline接口使用方法基本上相同。但是它多了幾個(gè)可選參數(shù)以滿足我們個(gè)性化的需求:since_id參數(shù)可以指定返回比since_id時(shí)間晚的評(píng)論。max_id參數(shù)可以指定返回小于等于max_id的

18、評(píng)論。filter_by_author參數(shù)可以對(duì)返回的評(píng)論按照評(píng)論者類型進(jìn)行篩選,例如可以只返回關(guān)注者的評(píng)論,或者是陌生人的評(píng)論,其請(qǐng)求參數(shù)說(shuō)明如表3所示:</p><p>  表 3 comments/show接口返回字段說(shuō)明</p><p>  請(qǐng)求服務(wù)器成功之后會(huì)返回一串JSON格式的數(shù)組。數(shù)組中的每個(gè)元素就是一個(gè)評(píng)論信息。它包括了評(píng)論內(nèi)容、評(píng)論發(fā)表者、評(píng)論的微博和該評(píng)論的回復(fù)評(píng)論

19、等等重要信息。我們將其全部解析出來(lái)存儲(chǔ)在我們的數(shù)據(jù)庫(kù)中。該接口返回?cái)?shù)據(jù)說(shuō)明如表4所示</p><p>  表 4 comments/show接口返回字段說(shuō)明</p><p>  friendships/friends/in_common接口</p><p>  此接口[6]是用戶獲取兩個(gè)用戶之間共同關(guān)注人列表。選此接口的目的是使我們可以得到一個(gè)比較聚合的網(wǎng)狀關(guān)系集

20、合,以達(dá)到分析社會(huì)網(wǎng)絡(luò)關(guān)系的目的。在此,我選擇了一個(gè)熱門微博用戶的UID作為測(cè)試SUID。以微博大廳抓取到的用戶UID作為需要獲取共同關(guān)注好友的UID。來(lái)獲取他們的共同好友。其請(qǐng)求參數(shù)說(shuō)明如表5所示:</p><p>  表 5 獲取共同關(guān)注人接口返回字段說(shuō)明</p><p>  請(qǐng)求服務(wù)器成功之后會(huì)返回一串JSON格式的數(shù)組。數(shù)組中的每個(gè)元素就是一個(gè)用戶信息。我們將其全部解析出來(lái)存儲(chǔ)

21、在我們的數(shù)據(jù)庫(kù)中。該接口返回?cái)?shù)據(jù)說(shuō)明如表6所示</p><p>  表 6 獲取共同關(guān)注人接口返回字段說(shuō)明</p><p><b>  社會(huì)網(wǎng)絡(luò)關(guān)系分析</b></p><p><b>  SNS社區(qū)交友</b></p><p>  SNS,全稱Social Networking Service

22、s,即社會(huì)性網(wǎng)絡(luò)服務(wù),專指旨在幫助人民建立社會(huì)性網(wǎng)絡(luò)的互聯(lián)網(wǎng)應(yīng)用服務(wù),根據(jù)哈佛大學(xué)的心理學(xué)教授Stanley Milgram提出的六度分隔理論,即最多通過(guò)六個(gè)人你就能夠認(rèn)識(shí)任何一個(gè)陌生人。按照六度分割理論,每個(gè)個(gè)體的社交圈都在不斷放大,最后成為了一個(gè)容納全世界人類的巨型網(wǎng)絡(luò)[7],這就是社會(huì)性網(wǎng)絡(luò)的早期理解。后來(lái)有人根據(jù)這種理論,創(chuàng)立了面向社會(huì)性網(wǎng)絡(luò)的互聯(lián)網(wǎng)服務(wù),并通過(guò)“熟人的熟人”來(lái)進(jìn)行網(wǎng)絡(luò)社交拓展,比如Friendster,wall

23、op,adoerme等。</p><p>  SNS的實(shí)名制是用戶快速找到熟人的基礎(chǔ),用戶真實(shí)信息可以形成用戶關(guān)系的真是相關(guān)性,這種相關(guān)性可以讓系統(tǒng)對(duì)用戶之間進(jìn)行匹配。從而是用戶更快的找到自己的熟人。SNS用戶關(guān)系是實(shí)現(xiàn)信息傳播的渠道基礎(chǔ),一維或者多維的用戶真實(shí)關(guān)系,讓用戶之間形成了一張巨大的社交網(wǎng)。這張網(wǎng)可以容納整個(gè)世界的人,從而形成一種聯(lián)動(dòng)效應(yīng),</p><p>  但這種社交方式只是

24、人們社交拓展的一種方式,并非社交拓展的全部。在國(guó)內(nèi),SNS的的表現(xiàn)形式也越來(lái)越多樣,網(wǎng)絡(luò)用戶進(jìn)行社交拓展的方式也越來(lái)越多。比如根據(jù)相同話題而進(jìn)行凝聚的百度貼吧。根據(jù)相同興趣愛好而進(jìn)行凝聚的開心網(wǎng),豆瓣網(wǎng)。根據(jù)相同學(xué)習(xí)經(jīng)歷而凝聚的人人網(wǎng),QQ校友等等,都被納入了SNS的范疇。</p><p>  事實(shí)上,目前SNS網(wǎng)站已經(jīng)成為了一種很火爆的互聯(lián)網(wǎng)現(xiàn)象,如果說(shuō)美國(guó)SNS的高速發(fā)展是因?yàn)榫哂旋嫶蟮挠脩艋A(chǔ),那么我國(guó)SN

25、S的巨大發(fā)展則與高速發(fā)展的互聯(lián)網(wǎng)用戶信息群息息相關(guān),根據(jù)中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心的報(bào)告,中國(guó)網(wǎng)民規(guī)模已經(jīng)躍居世界第一位了。開心網(wǎng)的火爆發(fā)展已經(jīng)掀起了國(guó)內(nèi)SNS的井噴,SNS已經(jīng)是目前互聯(lián)網(wǎng)行業(yè)最受矚目的新興領(lǐng)域。</p><p>  下面是國(guó)內(nèi)幾個(gè)知名SNS網(wǎng)站首頁(yè)截圖</p><p><b>  圖 3開心網(wǎng)首頁(yè)</b></p><p><

26、b>  圖 4人人網(wǎng)首頁(yè)</b></p><p><b>  LBS基于位置服務(wù)</b></p><p>  LBS[8],全稱 Location Based Service。它是通過(guò)電信移動(dòng)運(yùn)營(yíng)商的無(wú)線電通訊網(wǎng)絡(luò)(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動(dòng)終端用戶的位置信息,在GIS(Geographic information S

27、ystem)平臺(tái)的支持下,為用戶提供相應(yīng)服務(wù)的一種增值業(yè)務(wù)。</p><p>  隨著移動(dòng)互聯(lián)網(wǎng)和移動(dòng)通信軟硬件的發(fā)展,手機(jī)不僅僅只用于打電話發(fā)短信了。玩游戲,交朋友,看視頻等等都成了不少手機(jī)用戶必不可少的娛樂項(xiàng)目了。目前,內(nèi)嵌GPS模塊的智能手機(jī)逐步成為市場(chǎng)的主流,由于通過(guò)GPS模塊能夠獲得速度、方向以及二維乃至三維的空間位置信息,其所帶來(lái)的好處不僅僅是導(dǎo)航,其他以位置為基本特征的相關(guān)服務(wù)日漸興起,越來(lái)越收到大

28、眾的青睞。此外,由于具備GPS導(dǎo)航功能的手機(jī)都集成有地圖數(shù)據(jù),是LBS業(yè)務(wù)實(shí)現(xiàn)的最佳載體,通過(guò)將電子地圖,客戶關(guān)心的位置信息以及移動(dòng)互聯(lián)網(wǎng)信息三者融合,這樣的技術(shù)將會(huì)帶來(lái)新的商業(yè)模式和盈利模式。例如主打陌生人交友的手機(jī)端軟件陌陌。簽到模式休閑娛樂類軟件嘀咕,街旁等等。本課題的研究對(duì)于LBS類軟件也有著一定的輔助功能,它能夠幫助該類軟件在運(yùn)營(yíng)初期增強(qiáng)和積累數(shù)據(jù)庫(kù)數(shù)據(jù)量和用戶量。</p><p>  圖 5 LBS

29、軟件陌陌</p><p>  圖 6 LBS軟件街旁</p><p>  圖 7 LBS軟件嘀咕</p><p>  圖 8 LBS 軟件遇見</p><p><b>  社會(huì)網(wǎng)絡(luò)</b></p><p>  社會(huì)網(wǎng)絡(luò)[9]是指社會(huì)成員之間因?yàn)榛?dòng)而形成的相對(duì)穩(wěn)定的關(guān)系體系,社會(huì)網(wǎng)絡(luò)關(guān)注的是人

30、們之間的互動(dòng)關(guān)系,社會(huì)互動(dòng)會(huì)影響人們的社會(huì)行為[6]。從社會(huì)網(wǎng)絡(luò)的角度出發(fā),人在社會(huì)環(huán)境中的相互作用可以表達(dá)為基于關(guān)系的一種模式或規(guī)則,而基于這種關(guān)系的有規(guī)律模式反映了社會(huì)結(jié)構(gòu),這種結(jié)構(gòu)的量化分析是社會(huì)網(wǎng)絡(luò)分析的出發(fā)點(diǎn)。</p><p>  近年來(lái),隨著圖論,概率論以及各種幾何學(xué)的發(fā)展和完善,社會(huì)網(wǎng)絡(luò)分析作為一種應(yīng)用性很強(qiáng)的社會(huì)學(xué)研究方法越來(lái)越受人矚目。在社會(huì)學(xué)中,網(wǎng)絡(luò)研究通常有兩種視角:第一,將網(wǎng)絡(luò)視為一種分析

31、工具,憑借這種工具可以理清行動(dòng)者之間,行動(dòng)者與其環(huán)境之間的關(guān)系;第二,將網(wǎng)絡(luò)視為由行動(dòng)者之間的關(guān)系所構(gòu)成的社會(huì)結(jié)構(gòu),此時(shí)關(guān)系本身成為研究的對(duì)象。</p><p>  網(wǎng)狀結(jié)構(gòu)通常指網(wǎng)絡(luò)內(nèi)部各行動(dòng)者之間相對(duì)穩(wěn)定的關(guān)系模式或“結(jié)構(gòu)洞”模式。外國(guó)學(xué)者伯特是最早系統(tǒng)闡述“結(jié)構(gòu)洞”這個(gè)概念的學(xué)者,用它來(lái)特指網(wǎng)絡(luò)中某些行動(dòng)者之間關(guān)系缺乏的現(xiàn)象,按照伯特的觀點(diǎn),當(dāng)網(wǎng)絡(luò)中人們之間沒有直接關(guān)系或關(guān)系缺失時(shí),網(wǎng)絡(luò)就會(huì)出現(xiàn)空洞,即所謂

32、的“結(jié)構(gòu)洞”?!敖Y(jié)構(gòu)洞”之所以重要,是因?yàn)椤敖Y(jié)構(gòu)洞”通常構(gòu)成了網(wǎng)絡(luò)中信息折射和資源流動(dòng)的“閥門”,是否折射或流動(dòng),如何折射或流動(dòng),這一切都可以掌控在占據(jù)這個(gè)“結(jié)構(gòu)洞”的行動(dòng)者手里。因此,在網(wǎng)絡(luò)中占有的“結(jié)構(gòu)洞”越多,行動(dòng)者在結(jié)構(gòu)上所占有的優(yōu)勢(shì)就越大,通過(guò)這些優(yōu)勢(shì)獲得回報(bào)的可能性就越高。</p><p>  通過(guò)研究網(wǎng)絡(luò)關(guān)系,有助于把個(gè)體間關(guān)系、“微觀”網(wǎng)絡(luò)與大規(guī)模的社會(huì)系統(tǒng)的“宏觀”結(jié)構(gòu)結(jié)合起來(lái)。圖9是社會(huì)網(wǎng)絡(luò)關(guān)

33、系圖。</p><p>  圖 9 社會(huì)網(wǎng)絡(luò)關(guān)系圖</p><p>  Prefuse可視化工具</p><p>  我們處在一個(gè)信息爆炸的時(shí)代,對(duì)繁雜的抽象信息之間的復(fù)雜關(guān)系進(jìn)行探索的努力,促使了信息可視化這一嶄新科學(xué)領(lǐng)域的出現(xiàn)。</p><p>  Prefuse[10]是一個(gè)可擴(kuò)展的軟件框架,它可以幫助Java語(yǔ)言開發(fā)者開發(fā)交互的信息可

34、視化程序。它在分析社會(huì)網(wǎng)絡(luò)關(guān)系有巨大的作用,我們可以將我們所需要繪制的繪圖數(shù)據(jù)轉(zhuǎn)換為prefuse內(nèi)部數(shù)據(jù)的形式,graph,tree。它支持由表,圖,樹組成的數(shù)據(jù)結(jié)構(gòu),字段的數(shù)據(jù)索引和選擇列的查詢,并且高效的利用內(nèi)存。并且通過(guò)一組活動(dòng)的時(shí)序機(jī)制來(lái)實(shí)現(xiàn)動(dòng)畫,包含了可視化的變形效果,包括物體位置移動(dòng)和通過(guò)空間的放大縮小,它還融合了lucene文本查詢engines,并且內(nèi)建了類似于SQL的語(yǔ)言語(yǔ)句可以針對(duì)數(shù)據(jù)進(jìn)行行和列的操作。在位置和動(dòng)畫

35、中還利用了物理力學(xué)的模擬,使整個(gè)動(dòng)畫的效果非常的真實(shí)好看。它支持從XML,數(shù)據(jù)庫(kù)導(dǎo)入繪圖數(shù)據(jù)。開發(fā)者只要通過(guò)簡(jiǎn)單使用他的API就能將數(shù)據(jù)庫(kù)中的數(shù)據(jù)繪制出來(lái)。微博用戶之間的好友關(guān)系就是一張網(wǎng)絡(luò),好友的好友的好友等關(guān)系不斷蔓延,形成一個(gè)網(wǎng)狀結(jié)構(gòu),用prefuse可視化的展示社會(huì)關(guān)系將會(huì)非常的直觀和清晰[11]。圖10是Prefuse分析社交網(wǎng)絡(luò)的效果圖</p><p>  圖 10 Prefuse社交網(wǎng)絡(luò)分析圖<

36、;/p><p><b>  數(shù)據(jù)庫(kù)連接技術(shù)</b></p><p><b>  MYSQL</b></p><p>  MySQL是一個(gè)小型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)[12]。它是完全網(wǎng)絡(luò)化的跨平臺(tái)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),是一個(gè)真正的多用戶,多線程SQL數(shù)據(jù)庫(kù)服務(wù)器,同時(shí)是具有C/S體系結(jié)構(gòu)的分布式數(shù)據(jù)庫(kù)管理系統(tǒng),它具有功能強(qiáng),使用簡(jiǎn)便,管

37、理方便,運(yùn)行速度快,安全可靠性強(qiáng)等有點(diǎn),用戶可以利用許多語(yǔ)言編寫訪問(wèn)Mysql數(shù)據(jù)庫(kù)的程序,對(duì)于中,小型應(yīng)用系統(tǒng)是非常理想的。除了支持標(biāo)準(zhǔn)的ANSISQL語(yǔ)句,更重要的是,它還支持多種平臺(tái)。。它支持Linux,Mac OS,Windows等多種操作系統(tǒng),并且為多種編程語(yǔ)言提供了API,提供了TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑。這些系統(tǒng)特性使得它收到絕大多數(shù)個(gè)人開發(fā)者和中小型企業(yè)的追捧。目前Internet上流行的網(wǎng)站架

38、構(gòu)方式就是LAMP(Linux+Apache+MySQL+PHP)。由于這四個(gè)軟件都是免費(fèi)的或者開源軟件,因此使用者可以不用花一分錢就建立起一個(gè)穩(wěn)定、免費(fèi)的網(wǎng)站系統(tǒng)。</p><p><b>  JDBC</b></p><p>  JDBC,全稱Java Database Connectivity [13]是一種用于執(zhí)行SQL語(yǔ)句的Java API.提供了諸如查詢和

39、更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的方法。它由一組Java語(yǔ)言編寫的類與接口組成。使用JDBC可以很容易地把SQL語(yǔ)句傳送到任何關(guān)系型數(shù)據(jù)庫(kù)中。JDBC API 提供兩種主要接口:一是面向開發(fā)人員的Java.sql程序包,使得Java程序員能夠進(jìn)行數(shù)據(jù)庫(kù)連接,執(zhí)行SQL查詢,并得到結(jié)果集合,另一方向是面向底層數(shù)據(jù)庫(kù)廠商的JDBC驅(qū)動(dòng),它介于前端應(yīng)用程序與后端數(shù)據(jù)源之間。根據(jù)其特性不同,大致分為4種類型:</p><p>  JDB

40、C-ODBC橋驅(qū)動(dòng)程序。應(yīng)用程序通過(guò)JDBC-ODBC橋,以調(diào)用ODBC連接數(shù)據(jù)源,由于微軟windows系統(tǒng)中的ODBC大多已支持各種類型的數(shù)據(jù)源,因此在建構(gòu)上較為方便,可直接使用JDK附屬的驅(qū)動(dòng)程序進(jìn)行連接。但是由于經(jīng)過(guò)了橋的轉(zhuǎn)換,因此在效率上并不十分理想。因此不太適合于企業(yè)應(yīng)用上。</p><p>  Native API 驅(qū)動(dòng)程序。此類型驅(qū)動(dòng)程序也需要經(jīng)過(guò)類似橋的機(jī)制連接數(shù)據(jù)源,所不同的是,此類型的橋?yàn)樵?/p>

41、聲函數(shù)庫(kù),是軟件廠商針對(duì)其數(shù)據(jù)庫(kù)自行開發(fā)的。由于使用了源生碼,提高了執(zhí)行速度。但如果出錯(cuò),修改起來(lái)也將非常麻煩。</p><p>  Net-Protocol 驅(qū)動(dòng)程序。此類JDBC驅(qū)動(dòng)程序會(huì)將SQL語(yǔ)句轉(zhuǎn)換成為標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議,交由數(shù)據(jù)庫(kù)網(wǎng)關(guān)或應(yīng)用程序服務(wù)器處理,應(yīng)用程序服務(wù)器將標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議翻譯成為數(shù)據(jù)庫(kù)廠商的專有特殊數(shù)據(jù)庫(kù)訪問(wèn)協(xié)議與數(shù)據(jù)庫(kù)通信。此類驅(qū)動(dòng)程序可充分運(yùn)用程序服務(wù)器的安全機(jī)制,并且不需要額外的ODBC或

42、者原生函數(shù)庫(kù)等機(jī)制,因此系統(tǒng)可移植性強(qiáng)。</p><p>  Native-Protocol 驅(qū)動(dòng)程序。此類驅(qū)動(dòng)程序不需要任何中介機(jī)制,直接轉(zhuǎn)換JDBC調(diào)用,成為DBMS的網(wǎng)絡(luò)協(xié)議,直接訪問(wèn)數(shù)據(jù)源,這對(duì)Internet應(yīng)用是高效的,但是由于缺乏安全機(jī)制的支持,可能會(huì)存在一些潛在的安全隱患。</p><p>  Java與JDBC的結(jié)合,使程序員可以只寫一次數(shù)據(jù)庫(kù)應(yīng)用軟件后,就能在各種不同數(shù)

43、據(jù)庫(kù)上運(yùn)行,真正發(fā)揮了Java“編寫一次,處處運(yùn)行”的優(yōu)勢(shì)。</p><p>  本系統(tǒng)對(duì)數(shù)據(jù)庫(kù)連接的封裝</p><p>  本次課題在JDBC的基礎(chǔ)寫了一個(gè)管理數(shù)據(jù)庫(kù)的封裝類。封裝了與數(shù)據(jù)庫(kù)連接方法,數(shù)據(jù)庫(kù)數(shù)據(jù)更新方法,類結(jié)構(gòu)如圖11所示。</p><p>  圖 11 數(shù)據(jù)庫(kù)管理類</p><p>  本系統(tǒng)所用到的數(shù)據(jù)庫(kù)表結(jié)構(gòu)如圖1

44、2所示:</p><p>  圖 12 數(shù)據(jù)庫(kù)表結(jié)構(gòu)</p><p>  圖 13 好友關(guān)系表結(jié)構(gòu)</p><p>  圖 14 微博評(píng)論表結(jié)構(gòu)</p><p>  圖 15 微博信息表結(jié)構(gòu)</p><p>  圖 16微博用戶表結(jié)構(gòu)</p><p><b>  實(shí)驗(yàn)環(huán)境</b&

45、gt;</p><p>  本系統(tǒng)所使用的開發(fā)環(huán)境是windows系統(tǒng)。理論上也支持Linux系統(tǒng)。開發(fā)語(yǔ)言使用的是Java程序語(yǔ)言,開發(fā)工具使用的是eclipse。另外本系統(tǒng)還使用了新浪開放平臺(tái)的weibo4J開源代碼和Prefuse的開源框架。引用的外部jar包如圖17所示。</p><p>  圖 17 系統(tǒng)引用jar包</p><p>  新浪微博抓取系統(tǒng)實(shí)

46、驗(yàn)方案</p><p><b>  功能介紹。</b></p><p>  本工程模塊用于實(shí)現(xiàn)新浪微博的授權(quán)認(rèn)證和微博信息的抓取。是整個(gè)系統(tǒng)的核心功能。其整體功能模塊劃分如圖18所示:</p><p>  圖 18 系統(tǒng)模塊劃分圖</p><p><b>  實(shí)現(xiàn)方案介紹</b></p>

47、;<p>  首先我們需要完成測(cè)試用戶的授權(quán)認(rèn)證過(guò)程:</p><p>  我們需要的是打開瀏覽器請(qǐng)求https://api.weibo.com/oauth2/authorize接口。把我們之前申請(qǐng)好的應(yīng)用的App_key和Sercret Key作為參數(shù)傳過(guò)去,服務(wù)器會(huì)跳轉(zhuǎn)到認(rèn)證頁(yè)面。輸入測(cè)試用戶的微博賬號(hào)和密碼。服務(wù)器會(huì)跳轉(zhuǎn)到我們之前申請(qǐng)應(yīng)用時(shí)設(shè)定的重定向頁(yè)面。并且在重定向頁(yè)面的URL后面會(huì)帶有一

48、個(gè)code參數(shù)。例如(http://www.blogjava.net/jayslong?code=f98824ae9dc0552b4bf5a07e4778cfbd)我們根據(jù)這個(gè)code去請(qǐng)求https://api.weibo.com/oauth2/access_token接口。服務(wù)器認(rèn)證通過(guò)后就會(huì)返回經(jīng)過(guò)授權(quán)了的access_token。我們就可以用這個(gè)token去請(qǐng)求開放平臺(tái)的API了。圖19是新浪微博抓取模塊的流程圖</p&g

49、t;<p>  工程模塊各類關(guān)系介紹</p><p>  本項(xiàng)目的源代碼結(jié)構(gòu)如圖20所示:</p><p>  圖20 項(xiàng)目代碼結(jié)構(gòu)圖</p><p>  其中OAuth4Code.java是用來(lái)獲取access_token。運(yùn)行OAuth4Code.Java將會(huì)跳完新浪服務(wù)器進(jìn)行認(rèn)證。運(yùn)行截圖如圖21所示</p><p> 

50、 圖 21 授權(quán)認(rèn)證過(guò)程</p><p>  DBHelp.java是數(shù)據(jù)庫(kù)管理類。StartUP.java是新浪抓取模塊的啟動(dòng)類。WeiboPrefuse.java是用來(lái)可視化顯示好友關(guān)系的工具類。prefuse包里面是開源框架prefuse的源碼,weibo4j包里面是新浪微博開放平臺(tái)的SDK。里面封裝了一些聯(lián)網(wǎng)請(qǐng)求和返回?cái)?shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。</p><p>  另外整個(gè)項(xiàng)目還有幾個(gè)配置文

51、件需要注意,通過(guò)配置這幾個(gè)文件,可以很方便的將其中的模塊部分或完全移植到相應(yīng)的計(jì)算機(jī)環(huán)境中。</p><p>  在src根目錄下有一個(gè)config.properties文件,該文件用于配置新浪開放平臺(tái)應(yīng)用的相關(guān)信息。其內(nèi)容如圖22所示:</p><p>  圖 22 config.properties配置文件</p><p>  client_id:是我們申請(qǐng)新浪

52、開放平臺(tái)應(yīng)用是得到應(yīng)用ID。</p><p>  client_SERCRET: 是我們申請(qǐng)新浪開放平臺(tái)應(yīng)用是得到應(yīng)密鑰。</p><p>  通過(guò)這兩個(gè)id可以幫助新浪服務(wù)器區(qū)分我們的應(yīng)用,并且防止我們的應(yīng)用給他人盜用。redirect_URI:這個(gè)當(dāng)用戶授權(quán)成功后跳轉(zhuǎn)的網(wǎng)頁(yè)URI。我們需要一個(gè)可以訪問(wèn)的網(wǎng)頁(yè)供用戶授權(quán)成功后跳轉(zhuǎn)。這個(gè)重定向URL必須要和我們申請(qǐng)應(yīng)用的時(shí)候設(shè)定的重定向UR

53、L一致,否則服務(wù)器會(huì)拋出錯(cuò)誤導(dǎo)致認(rèn)證失敗。</p><p>  baseURL:所有接口的URL都是以這個(gè)為基礎(chǔ)拼接出來(lái)的。</p><p>  access_token:這個(gè)是我們以后訪問(wèn)絕大多是API所必須的參數(shù),他是經(jīng)過(guò)我們用戶授權(quán)后返回的有效的access_token。每個(gè)token都有一個(gè)有效期,一般在開發(fā)階段。每個(gè)token的有效期只有1天。一天后我們就需要重新認(rèn)證獲取新的ac

54、cess_token。當(dāng)應(yīng)用提交審核并且通過(guò)后,token的有效期將延伸至7天,如果需要更長(zhǎng)更久的token有效期,則需要與開放平臺(tái)交涉申請(qǐng),開放平臺(tái)會(huì)根據(jù)我們應(yīng)用的狀態(tài)和性質(zhì),調(diào)整token的失效期。</p><p>  accessTokenURL:這個(gè)URL是用來(lái)獲取access_token的。</p><p>  authorizeURL:這個(gè)URL是用來(lái)跳轉(zhuǎn)到服務(wù)器進(jìn)行用戶授權(quán)認(rèn)

55、證的。</p><p>  在config目錄下還有一個(gè)source.conf文件。該文件是用來(lái)配置數(shù)據(jù)庫(kù)相關(guān)。其大致內(nèi)容如圖23所示:</p><p>  圖 23數(shù)據(jù)庫(kù)配置文件</p><p>  這四個(gè)參數(shù)可以根據(jù)具體計(jì)算機(jī)環(huán)境中的數(shù)據(jù)庫(kù)配置靈活更改。</p><p>  通過(guò)這些配置文件,我們可以不更改代碼就將項(xiàng)目運(yùn)行在其他計(jì)算機(jī)上。

56、大大方便了項(xiàng)目的演示和移植。</p><p>  社會(huì)網(wǎng)絡(luò)關(guān)系可視化分析</p><p>  本系統(tǒng)使用了Prefuse[11]框架對(duì)抓取到的社會(huì)網(wǎng)絡(luò)關(guān)系進(jìn)行了可視化的分析,其網(wǎng)絡(luò)關(guān)系網(wǎng)狀圖如圖24所示:</p><p>  圖 24 社會(huì)網(wǎng)絡(luò)關(guān)系網(wǎng)狀圖</p><p>  在上圖中,每個(gè)節(jié)點(diǎn)代表一個(gè)微博用戶。而每條線則代表一個(gè)用戶關(guān)系,線條

57、越多說(shuō)明他/她的好友或者粉絲越多,說(shuō)明他/她的交際或者知名度很廣。例如上圖中的小S就是臺(tái)灣知名藝人兼主持人徐熙娣。她的粉絲是非常多的,所以以她為中心輻射出去的關(guān)系線非常的多。我們可以看到,粉絲越多的人,越在網(wǎng)絡(luò)的中心處。這樣體現(xiàn)了顯示生活中的現(xiàn)狀。明星們總是給粉絲們圍在中心處!上圖中還有一些個(gè)體脫離了這個(gè)網(wǎng)絡(luò)。這可能是因?yàn)樗暮糜鸦蛘叻劢z不多,也可能是因?yàn)樗?她的交際圈沒有融入到我們所抓取到的這個(gè)關(guān)系網(wǎng)中,如果我們抓取足夠多的數(shù)據(jù)的話,

58、我相信,所有人都將融入到整個(gè)關(guān)系網(wǎng)中,這也真正說(shuō)明了六度分割理論的準(zhǔn)確性。</p><p><b>  結(jié)束語(yǔ)</b></p><p>  本系統(tǒng)基于新浪開放平臺(tái)和OAuth2.0,通過(guò)請(qǐng)求開放平臺(tái)API,獲取服務(wù)器數(shù)據(jù)并把他解析出來(lái)存儲(chǔ)在數(shù)據(jù)庫(kù)中。實(shí)現(xiàn)了微博數(shù)據(jù),微博評(píng)論,微博用戶,微博用戶關(guān)系的抓取。并使用prefuse開源框架對(duì)微博用戶社會(huì)網(wǎng)絡(luò)關(guān)系的可視化分析。

59、</p><p>  總的來(lái)說(shuō)整個(gè)項(xiàng)目的功能還是很基礎(chǔ)的,可擴(kuò)展和優(yōu)化的地方還很多。我自己的代碼也有很多可以優(yōu)化的地方。只是由于時(shí)間的關(guān)系,很多地方都顧及不到。另外如何突破新浪官方的限制也是提高項(xiàng)目整體實(shí)用性的重中之重。另外對(duì)于prefuse框架的應(yīng)用,網(wǎng)上很多的教程也只是對(duì)官方demo的簡(jiǎn)單運(yùn)用,prefuse更多更強(qiáng)大的功能,需要我們仔細(xì)研究其API和幫助文檔。但是不得不承認(rèn)Prefuse讓我開始覺得,Jav

60、a的SWING也能編寫出堪比MFC的用戶交互程序。</p><p>  盡管有這樣或者那樣的不足,但是在這個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,我的收獲還是很豐富的。我目前在一家手機(jī)軟件公司擔(dān)任Android開發(fā)程序員,主要項(xiàng)目也是基于LBS的應(yīng)用軟件。之前在項(xiàng)目中也使用過(guò)開放平臺(tái)的相關(guān)東西,但是并不深入,通過(guò)此次畢業(yè)設(shè)計(jì),我對(duì)整個(gè)OAuth認(rèn)證過(guò)程有了更加透徹的認(rèn)識(shí)。對(duì)JSON數(shù)據(jù)交換格式也更加知根知底。并且學(xué)習(xí)到了很多軟件設(shè)計(jì)的

61、思想。這對(duì)我來(lái)說(shuō)都是無(wú)比寶貴的財(cái)富。</p><p>  在后續(xù)的工作中。如何突破新浪開放平臺(tái)的限制,將是我的工作重點(diǎn)。爭(zhēng)取能最大化的發(fā)揮其自動(dòng)抓取的性能。并且將對(duì)整個(gè)系統(tǒng)線程池進(jìn)行優(yōu)化,并從多線程方向進(jìn)行擴(kuò)展,提高系統(tǒng)的網(wǎng)絡(luò)請(qǐng)求效率和抓取速度,如有必要對(duì)微博中的圖片和用戶的頭像也進(jìn)行抓取并儲(chǔ)存下來(lái)。數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)方面也需要進(jìn)行優(yōu)化,采用數(shù)據(jù)庫(kù)連接池的方式更好的管理數(shù)據(jù)庫(kù)連接,提高數(shù)據(jù)庫(kù)存儲(chǔ)效率。大幅度提升整個(gè)系

62、統(tǒng)的實(shí)用性。最后為多方面的網(wǎng)絡(luò)數(shù)據(jù)抓取需求提供更好的幫助。</p><p><b>  【參考文獻(xiàn)】</b></p><p>  崔娜,盛斌,賈婉瑩.SNS網(wǎng)絡(luò)文化探析------以開心網(wǎng)為例[J]. 北京郵電大學(xué)學(xué)報(bào):社會(huì)科學(xué)版, 2009(5):1-4. </p><p>  劉鏑,張智江,張尼. 基于國(guó)內(nèi)開放平臺(tái)的Oauth認(rèn)證框架研究[

63、J], 信息通信技術(shù), 2011(1):1-4</p><p>  楊樹林,胡潔萍. JSON數(shù)據(jù)交換格式及其在數(shù)據(jù)驗(yàn)證中的應(yīng)用[J], 北京印刷學(xué)院學(xué)報(bào), 2008(4):56-58.</p><p>  余學(xué)軍. 六度分割理論成就SNS[J]. 信息網(wǎng)絡(luò), 2008(11):37-37</p><p>  陳飛翔,楊崇俊,申勝利,于文洋,楊建宇. 基于LBS的移

64、動(dòng)GIS研究[J], 計(jì)算機(jī)工程與應(yīng)用, 2006(2):200-202</p><p>  林聚任. 社會(huì)網(wǎng)絡(luò)分析 [M]. 北京師范大學(xué)出版社, 2009.</p><p>  Jeffrey Heer, Stuart K.Card.James A.Landay, prefuse:a toolkit for interactive information visualization[

65、M]. ACM New York,USA 2005.</p><p>  Belue,J.M, Netwrok Visualization Design Using Prefuse Visualization Toolkit[M] 2008.5</p><p>  蘭旭輝,熊家軍,鄧剛. 基于MySQL的應(yīng)用程序設(shè)計(jì)[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2006(3):442-443.</p

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論