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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34、視化程序。它在分析社會網(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)存。并且通過一組活動的時序機制來實現(xiàn)動畫,包含了可視化的變形效果,包括物體位置移動和通過空間的放大縮小,它還融合了lucene文本查詢engines,并且內(nèi)建了類似于SQL的語言語句可以針對數(shù)據(jù)進(jìn)行行和列的操作。在位置和動畫

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

64、動GIS研究[J], 計算機工程與應(yīng)用, 2006(2):200-202</p><p>  林聚任. 社會網(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]. 計算機工程與設(shè)計, 2006(3):442-443.</p

溫馨提示

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

評論

0/150

提交評論