




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微博信息抓取系統(tǒng)【摘要】針對微博中龐大的數(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)系。從實際運行效果分析,該抓取系統(tǒng)能夠滿足各種SNS應用的內(nèi)容填充,及網(wǎng)絡用戶社會網(wǎng)絡關(guān)系分析?!娟P(guān)鍵詞】Oauth2.0;新浪開放平臺;社會網(wǎng)絡關(guān)系;prefuse1 引言1.1 研究背景及意義隨著移動互聯(lián)網(wǎng)的發(fā)展,中國迎來了真正的微博時代。微博由于其內(nèi)容簡短,寫作門檻
2、低,發(fā)布渠道便捷化,多樣化,同步化,使得信息生產(chǎn)趨于零時間。與其他信息交流模式不同,微博最大的特點在于技術(shù)上的便攜性。2009年,3G牌照的發(fā)放標志著移動互聯(lián)網(wǎng)時代的到來,移動手機和互聯(lián)網(wǎng)這兩種在中國發(fā)展最為迅速的媒介開始融合在一起,為微博的快速擴張做了技術(shù)上的準備,與傳統(tǒng)博客相比,微博對用戶能夠產(chǎn)生很強粘性的原因,就在于其在技術(shù)上無可比擬的便攜性。用戶可以通過各種方式登陸微博,發(fā)表微博。尤其是手機和微博的綁定使得這以新媒介對微博用戶的接近性滿足了4A的元素,即Anything,anywhere,anyone,anytime。任何用戶可以在任何時間任何地點發(fā)布任何內(nèi)容。從此,人們的信息交流得到
3、了空前的大解放。微博信息抓取系統(tǒng)通過開放平臺的API抓取我們所需要的信息,為各式各樣的SNS1社區(qū)應用在運營初期充實其數(shù)據(jù)量和用戶量,以吸引更多的用戶關(guān)注和使用。SNS社區(qū)交友是現(xiàn)在網(wǎng)絡用戶之間相互交流的最主要方式。當前最流行的SNS網(wǎng)絡莫過于開心網(wǎng),人人網(wǎng),以及各大微博了,其中以新浪微博的活躍用戶量最為龐大,本課題主要以新浪微博為主要研究和抓取對象,實現(xiàn)信息抓取的功能。整個系統(tǒng)的框架擁有較強的可擴展性,可根據(jù)需要增加其他SNS網(wǎng)絡社區(qū)的抓取模塊。另外,本系統(tǒng)還從網(wǎng)絡用戶的社會網(wǎng)絡關(guān)系出發(fā),圖形化的展示了網(wǎng)絡用戶之間的社交關(guān)系1.2 本課題主要工作本文主要解決的問題有抓取新浪微博的微博大廳數(shù)據(jù)
4、已經(jīng)其相關(guān)的評論和用戶信息。包括新浪微博的Oauth2.0認證,通過調(diào)用新浪微博的API,得到并解析服務器返回的json文檔,建立相應的數(shù)據(jù)庫,儲存在數(shù)據(jù)庫中。并通過Prefuse對抓取的微博用戶好友關(guān)系進行了可視化的顯示。實現(xiàn)全自動的抓取、解析、和數(shù)據(jù)存儲過程。 大大提高了信息收集的工作效率,并大大降低了信息收集的出錯率。滿足了企事業(yè)公司對微博信息的內(nèi)容需求和網(wǎng)絡用戶的社會關(guān)系分析。2 新浪微博開放平臺2.1 微博用戶的授權(quán)認證2.1.1 新浪微博應用創(chuàng)建新浪微博開放平臺允許所有微博用戶創(chuàng)建自己的應用,用戶只要填寫清楚開發(fā)者的詳細信息和應用的相關(guān)資料就可以創(chuàng)建自己的應用了。應用創(chuàng)建成功后,開
5、發(fā)者將會獲得該應用的APP KEY和Sercret Key。我們就是通過這兩個key進行相關(guān)的技術(shù)開發(fā)工作。并且通過這兩個key唯一標識我們的應用。其新浪微博應用創(chuàng)建和發(fā)布的流程圖如圖1所示。圖 1 新浪開放平臺應用創(chuàng)建流程及發(fā)布流程圖2.1.2 OAuth2.0授權(quán)認證 OAuth2.0是從2006年開始設計OAuth2協(xié)議的下一個版本。OAuth(開放授權(quán))是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網(wǎng)站上存儲的私密的資源(如照片,視頻,聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應用。OAuth允許用戶提供一個令牌,而不是用戶名和密碼來訪問他們存放在特定服務提供者的數(shù)據(jù)。每一個
6、令牌授權(quán)一個特定的網(wǎng)站(例如,視頻編輯網(wǎng)站)在特定的時段(例如,接下來的2小時內(nèi))內(nèi)訪問特定的資源(例如僅僅是某一相冊中的視頻)。這樣,OAuth允許用戶授權(quán)第三方網(wǎng)站訪問他們存儲在另外的服務提供者上的信息,而不需要分享他們的訪問許可或他們數(shù)據(jù)的所有內(nèi)容。相比于OAuth1.0,OAuth2.0整個授權(quán)驗證流程更加簡單和安全。也是新浪微博開發(fā)平臺未來最主要的用戶驗證和授權(quán)方式。使用新的2.0協(xié)議進行授權(quán)認證。開發(fā)者只需要調(diào)用oauth2/authorize接口引導用戶授權(quán),并在授權(quán)后重定向的網(wǎng)頁得到code碼后向服務器oauth2/access_token接口換取access_token,就可
7、以使用這個access_token調(diào)用新浪微博的API了。其授權(quán)的基本流程如圖2所示:圖 2 OAuth認證基本流程雖然2.0的授權(quán)機制更簡單安全,但是越安全越說明其限制越多,其中access_token的有效期在開發(fā)測試階段只有24小時。在24小時之后就必須重新授權(quán)獲取新的access_token。而新浪微博的一些接口也有訪問頻次限制。在軟件開發(fā)測試階段,通常一個接口的訪問頻次限制在150次/小時,當應用審核通過正式發(fā)布以后將會有更多更大的權(quán)限。其授權(quán)標準也會有一定的提升,訪問頻次的限制將提高,access_token的有效期也會延長。當然開發(fā)者也可以和開放平臺申請更高的訪問頻次和token
8、有效期,開放平臺會根據(jù)你應用的類型和規(guī)模審核你的請求。2.2 新浪微博API2.2.1 JSON數(shù)據(jù)交換格式JSON(Javascript Object Notation),是一種輕量級的數(shù)據(jù)交換格式3 ,它是JavaScript的一個子集,但它是獨立于語言的文本格式,易于人閱讀和編寫,同時也易于機器解析和生成。它的這些特性使它成為理想的數(shù)據(jù)交換語言。JSON構(gòu)建于兩種結(jié)構(gòu)。一種是鍵值對的集合形式,一種是值的有序列表。這些結(jié)構(gòu)使得大部分現(xiàn)代計算機語言都以某種形式支持它們,這使一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語言之間交換成為可能。與XML比較,JSON在Web數(shù)據(jù)交換處理上的更具優(yōu)勢。采用J
9、SON來緩存元數(shù)據(jù),便于存儲復雜的驗證數(shù)據(jù),客戶端容易解析和使用。在具體實現(xiàn)上,通過服務器程序生成JSON存儲驗證數(shù)據(jù)和函數(shù),利用AJAX技術(shù)設計客戶端函數(shù)來訪問元數(shù)據(jù)以驗證用戶輸入。實現(xiàn)的結(jié)果表明:由于使用JSON存儲復雜的元數(shù)據(jù)和驗證規(guī)則,該方案在保證安全性和可擴展性的同時,提高了驗證效率。2.2.2 statuses/public_timeline接口此接口4是用于返回最新的公共微博,也就是微博大廳的最新微博。該接口使用的是GET請求方式,返回的是JSON格式的微博數(shù)據(jù)。由于我們使用的是OAuth2.0方式授權(quán),我們的請求參數(shù)將非常簡單。只需要將之前授權(quán)得到的access_token和需
10、要請求的返回記錄條數(shù)count以及返回結(jié)果的頁碼page傳給服務器就可以了。其請求參數(shù)說明如表1所示:表 1 public_timeline請求參數(shù)說明必選類型及范圍說明sourcefalsestring采用OAuth授權(quán)方式不需要此參數(shù),其他授權(quán)方式為必填參數(shù),數(shù)值為應用的AppKey。access_tokenfalsestring采用OAuth授權(quán)方式為必填參數(shù),其他授權(quán)方式不需要此參數(shù),OAuth授權(quán)后獲得。countfalseint單頁返回的記錄條數(shù),默認為50。pagefalseint返回結(jié)果的頁碼,默認為1。base_appfalseint是否只獲取當前應用的數(shù)據(jù)。0為否(所有數(shù)據(jù)
11、),1為是(僅當前應用),默認為0。請求服務器成功之后會返回一串JSON格式的數(shù)組。數(shù)組中的每個元素就是一個微博信息。它包括了微博內(nèi)容、微博發(fā)表者、微博評論和轉(zhuǎn)發(fā)次數(shù)等等重要信息。我們將其全部解析出來存儲在我們的數(shù)據(jù)庫中。該接口返回數(shù)據(jù)說明如表2所示:表 2 public_timeline接口返回字段說明返回值字段字段類型字段說明idstrstring字符串型的微博IDcreated_atstring創(chuàng)建時間idint64微博IDtextstring微博信息內(nèi)容sourcestring微博來源favoritedboolean是否已收藏truncatedboolean是否被截斷in_reply_
12、to_status_idint64回復IDin_reply_to_user_idint64回復人UIDin_reply_to_screen_namestring回復人昵稱midint64微博MIDbmiddle_picstring中等尺寸圖片地址original_picstring原始圖片地址thumbnail_picstring縮略圖片地址reposts_countint轉(zhuǎn)發(fā)數(shù)comments_countint評論數(shù)annotationsarray微博附加注釋信息geoobject地理信息字段userobject微博作者的用戶信息字段2.2.3 comments/show接口此接口5是根據(jù)微
13、博ID返回該微博的評論列表。該接口和上面的timeline接口使用方法基本上相同。但是它多了幾個可選參數(shù)以滿足我們個性化的需求:since_id參數(shù)可以指定返回比since_id時間晚的評論。max_id參數(shù)可以指定返回小于等于max_id的評論。filter_by_author參數(shù)可以對返回的評論按照評論者類型進行篩選,例如可以只返回關(guān)注者的評論,或者是陌生人的評論,其請求參數(shù)說明如表3所示:表 3 comments/show接口返回字段說明必選類型及范圍說明sourcefalsestring采用OAuth授權(quán)方式不需要此參數(shù),其他授權(quán)方式為必填參數(shù),數(shù)值為應用的AppKey。access_
14、tokenfalsestring采用OAuth授權(quán)方式為必填參數(shù),其他授權(quán)方式不需要此參數(shù),OAuth授權(quán)后獲得。idtrueint64需要查詢的微博ID。since_idfalseint64若指定此參數(shù),則返回ID比since_id大的評論(即比since_id時間晚的評論),默認為0。max_idfalseint64若指定此參數(shù),則返回ID小于或等于max_id的評論,默認為0。countfalseint單頁返回的記錄條數(shù),默認為50。pagefalseint返回結(jié)果的頁碼,默認為1。filter_by_authorfalseint作者篩選類型,0:全部、1:我關(guān)注的人、2:陌生人,默認為
15、0。請求服務器成功之后會返回一串JSON格式的數(shù)組。數(shù)組中的每個元素就是一個評論信息。它包括了評論內(nèi)容、評論發(fā)表者、評論的微博和該評論的回復評論等等重要信息。我們將其全部解析出來存儲在我們的數(shù)據(jù)庫中。該接口返回數(shù)據(jù)說明如表4所示表 4 comments/show接口返回字段說明返回值字段字段類型字段說明created_atstring評論創(chuàng)建時間idint64評論的IDtextstring評論的內(nèi)容sourcestring評論的來源midint64評論的MIDuserobject評論作者的用戶信息字段statusobject評論的微博信息字段reply_commentobject回復的評論信息
16、字段2.2.4 friendships/friends/in_common接口此接口6是用戶獲取兩個用戶之間共同關(guān)注人列表。選此接口的目的是使我們可以得到一個比較聚合的網(wǎng)狀關(guān)系集合,以達到分析社會網(wǎng)絡關(guān)系的目的。在此,我選擇了一個熱門微博用戶的UID作為測試SUID。以微博大廳抓取到的用戶UID作為需要獲取共同關(guān)注好友的UID。來獲取他們的共同好友。其請求參數(shù)說明如表5所示:表 5 獲取共同關(guān)注人接口返回字段說明必選類型及范圍說明sourcefalsestring采用OAuth授權(quán)方式不需要此參數(shù),其他授權(quán)方式為必填參數(shù),數(shù)值為應用的AppKey。access_tokenfalsestring
17、采用OAuth授權(quán)方式為必填參數(shù),其他授權(quán)方式不需要此參數(shù),OAuth授權(quán)后獲得。uidtrueint64需要獲取共同關(guān)注關(guān)系的用戶UID。suidfalseint64需要獲取共同關(guān)注關(guān)系的用戶UID,默認為當前登錄用戶。countfalseint單頁返回的記錄條數(shù),默認為50。pagefalseint返回結(jié)果的頁碼,默認為1。請求服務器成功之后會返回一串JSON格式的數(shù)組。數(shù)組中的每個元素就是一個用戶信息。我們將其全部解析出來存儲在我們的數(shù)據(jù)庫中。該接口返回數(shù)據(jù)說明如表6所示表 6 獲取共同關(guān)注人接口返回字段說明返回值字段字段類型字段說明idint64用戶UIDscreen_namestri
18、ng用戶昵稱namestring友好顯示名稱provinceint用戶所在地區(qū)IDcityint用戶所在城市IDlocationstring用戶所在地descriptionstring用戶描述urlstring用戶博客地址profile_image_urlstring用戶頭像地址domainstring用戶的個性化域名genderstring性別,m:男、f:女、n:未知followers_countint粉絲數(shù)friends_countint關(guān)注數(shù)statuses_countint微博數(shù)favourites_countint收藏數(shù)created_atstring創(chuàng)建時間followingbo
19、olean當前登錄用戶是否已關(guān)注該用戶allow_all_act_msgboolean是否允許所有人給我發(fā)私信geo_enabledboolean是否允許帶有地理信息verifiedboolean是否是微博認證用戶,即帶V用戶allow_all_commentboolean是否允許所有人對我的微博進行評論avatar_largestring用戶大頭像地址verified_reasonstring認證原因follow_meboolean該用戶是否關(guān)注當前登錄用戶online_statusint用戶的在線狀態(tài),0:不在線、1:在線bi_followers_countint用戶的互粉數(shù)statuso
20、bject用戶的最近一條微博信息字段3 社會網(wǎng)絡關(guān)系分析3.1 SNS社區(qū)交友SNS,全稱Social Networking Services,即社會性網(wǎng)絡服務,專指旨在幫助人民建立社會性網(wǎng)絡的互聯(lián)網(wǎng)應用服務,根據(jù)哈佛大學的心理學教授Stanley Milgram提出的六度分隔理論,即最多通過六個人你就能夠認識任何一個陌生人。按照六度分割理論,每個個體的社交圈都在不斷放大,最后成為了一個容納全世界人類的巨型網(wǎng)絡7,這就是社會性網(wǎng)絡的早期理解。后來有人根據(jù)這種理論,創(chuàng)立了面向社會性網(wǎng)絡的互聯(lián)網(wǎng)服務,并通過“熟人的熟人”來進行網(wǎng)絡社交拓展,比如Friendster,wallop,adoerme等。
21、SNS的實名制是用戶快速找到熟人的基礎(chǔ),用戶真實信息可以形成用戶關(guān)系的真是相關(guān)性,這種相關(guān)性可以讓系統(tǒng)對用戶之間進行匹配。從而是用戶更快的找到自己的熟人。SNS用戶關(guān)系是實現(xiàn)信息傳播的渠道基礎(chǔ),一維或者多維的用戶真實關(guān)系,讓用戶之間形成了一張巨大的社交網(wǎng)。這張網(wǎng)可以容納整個世界的人,從而形成一種聯(lián)動效應,但這種社交方式只是人們社交拓展的一種方式,并非社交拓展的全部。在國內(nèi),SNS的的表現(xiàn)形式也越來越多樣,網(wǎng)絡用戶進行社交拓展的方式也越來越多。比如根據(jù)相同話題而進行凝聚的百度貼吧。根據(jù)相同興趣愛好而進行凝聚的開心網(wǎng),豆瓣網(wǎng)。根據(jù)相同學習經(jīng)歷而凝聚的人人網(wǎng),QQ校友等等,都被納入了SNS的范疇。事
22、實上,目前SNS網(wǎng)站已經(jīng)成為了一種很火爆的互聯(lián)網(wǎng)現(xiàn)象,如果說美國SNS的高速發(fā)展是因為具有龐大的用戶基礎(chǔ),那么我國SNS的巨大發(fā)展則與高速發(fā)展的互聯(lián)網(wǎng)用戶信息群息息相關(guān),根據(jù)中國互聯(lián)網(wǎng)絡信息中心的報告,中國網(wǎng)民規(guī)模已經(jīng)躍居世界第一位了。開心網(wǎng)的火爆發(fā)展已經(jīng)掀起了國內(nèi)SNS的井噴,SNS已經(jīng)是目前互聯(lián)網(wǎng)行業(yè)最受矚目的新興領(lǐng)域。下面是國內(nèi)幾個知名SNS網(wǎng)站首頁截圖圖 3開心網(wǎng)首頁圖 4人人網(wǎng)首頁3.2 LBS基于位置服務LBS8,全稱 Location Based Service。它是通過電信移動運營商的無線電通訊網(wǎng)絡(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動終端用戶的位置信息,
23、在GIS(Geographic information System)平臺的支持下,為用戶提供相應服務的一種增值業(yè)務。隨著移動互聯(lián)網(wǎng)和移動通信軟硬件的發(fā)展,手機不僅僅只用于打電話發(fā)短信了。玩游戲,交朋友,看視頻等等都成了不少手機用戶必不可少的娛樂項目了。目前,內(nèi)嵌GPS模塊的智能手機逐步成為市場的主流,由于通過GPS模塊能夠獲得速度、方向以及二維乃至三維的空間位置信息,其所帶來的好處不僅僅是導航,其他以位置為基本特征的相關(guān)服務日漸興起,越來越收到大眾的青睞。此外,由于具備GPS導航功能的手機都集成有地圖數(shù)據(jù),是LBS業(yè)務實現(xiàn)的最佳載體,通過將電子地圖,客戶關(guān)心的位置信息以及移動互聯(lián)網(wǎng)信息三者融
24、合,這樣的技術(shù)將會帶來新的商業(yè)模式和盈利模式。例如主打陌生人交友的手機端軟件陌陌。簽到模式休閑娛樂類軟件嘀咕,街旁等等。本課題的研究對于LBS類軟件也有著一定的輔助功能,它能夠幫助該類軟件在運營初期增強和積累數(shù)據(jù)庫數(shù)據(jù)量和用戶量。圖 5 LBS軟件陌陌圖 6 LBS軟件街旁圖 7 LBS軟件嘀咕圖 8 LBS 軟件遇見3.3 社會網(wǎng)絡社會網(wǎng)絡9是指社會成員之間因為互動而形成的相對穩(wěn)定的關(guān)系體系,社會網(wǎng)絡關(guān)注的是人們之間的互動關(guān)系,社會互動會影響人們的社會行為6。從社會網(wǎng)絡的角度出發(fā),人在社會環(huán)境中的相互作用可以表達為基于關(guān)系的一種模式或規(guī)則,而基于這種關(guān)系的有規(guī)律模式反映了社會結(jié)構(gòu),這種結(jié)構(gòu)的
25、量化分析是社會網(wǎng)絡分析的出發(fā)點。近年來,隨著圖論,概率論以及各種幾何學的發(fā)展和完善,社會網(wǎng)絡分析作為一種應用性很強的社會學研究方法越來越受人矚目。在社會學中,網(wǎng)絡研究通常有兩種視角:第一,將網(wǎng)絡視為一種分析工具,憑借這種工具可以理清行動者之間,行動者與其環(huán)境之間的關(guān)系;第二,將網(wǎng)絡視為由行動者之間的關(guān)系所構(gòu)成的社會結(jié)構(gòu),此時關(guān)系本身成為研究的對象。網(wǎng)狀結(jié)構(gòu)通常指網(wǎng)絡內(nèi)部各行動者之間相對穩(wěn)定的關(guān)系模式或“結(jié)構(gòu)洞”模式。外國學者伯特是最早系統(tǒng)闡述“結(jié)構(gòu)洞”這個概念的學者,用它來特指網(wǎng)絡中某些行動者之間關(guān)系缺乏的現(xiàn)象,按照伯特的觀點,當網(wǎng)絡中人們之間沒有直接關(guān)系或關(guān)系缺失時,網(wǎng)絡就會出現(xiàn)空洞,即所謂
26、的“結(jié)構(gòu)洞”?!敖Y(jié)構(gòu)洞”之所以重要,是因為“結(jié)構(gòu)洞”通常構(gòu)成了網(wǎng)絡中信息折射和資源流動的“閥門”,是否折射或流動,如何折射或流動,這一切都可以掌控在占據(jù)這個“結(jié)構(gòu)洞”的行動者手里。因此,在網(wǎng)絡中占有的“結(jié)構(gòu)洞”越多,行動者在結(jié)構(gòu)上所占有的優(yōu)勢就越大,通過這些優(yōu)勢獲得回報的可能性就越高。通過研究網(wǎng)絡關(guān)系,有助于把個體間關(guān)系、“微觀”網(wǎng)絡與大規(guī)模的社會系統(tǒng)的“宏觀”結(jié)構(gòu)結(jié)合起來。圖9是社會網(wǎng)絡關(guān)系圖。圖 9 社會網(wǎng)絡關(guān)系圖3.4 Prefuse可視化工具我們處在一個信息爆炸的時代,對繁雜的抽象信息之間的復雜關(guān)系進行探索的努力,促使了信息可視化這一嶄新科學領(lǐng)域的出現(xiàn)。Prefuse10是一個可擴展的
27、軟件框架,它可以幫助Java語言開發(fā)者開發(fā)交互的信息可視化程序。它在分析社會網(wǎng)絡關(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ù)進行行和列的操作。在位置和動畫中還利用了物理力學的模擬,使整個動畫的效果非常的真實好看。它支持從XML,數(shù)據(jù)庫導入繪圖數(shù)據(jù)。開發(fā)者只要通
28、過簡單使用他的API就能將數(shù)據(jù)庫中的數(shù)據(jù)繪制出來。微博用戶之間的好友關(guān)系就是一張網(wǎng)絡,好友的好友的好友等關(guān)系不斷蔓延,形成一個網(wǎng)狀結(jié)構(gòu),用prefuse可視化的展示社會關(guān)系將會非常的直觀和清晰11。圖10是Prefuse分析社交網(wǎng)絡的效果圖圖 10 Prefuse社交網(wǎng)絡分析圖4 數(shù)據(jù)庫連接技術(shù)4.1 MYSQLMySQL是一個小型關(guān)系數(shù)據(jù)庫管理系統(tǒng)12。它是完全網(wǎng)絡化的跨平臺關(guān)系型數(shù)據(jù)庫系統(tǒng),是一個真正的多用戶,多線程SQL數(shù)據(jù)庫服務器,同時是具有C/S體系結(jié)構(gòu)的分布式數(shù)據(jù)庫管理系統(tǒng),它具有功能強,使用簡便,管理方便,運行速度快,安全可靠性強等有點,用戶可以利用許多語言編寫訪問Mysql數(shù)據(jù)
29、庫的程序,對于中,小型應用系統(tǒng)是非常理想的。除了支持標準的ANSISQL語句,更重要的是,它還支持多種平臺。它支持Linux,Mac OS,Windows等多種操作系統(tǒng),并且為多種編程語言提供了API,提供了TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。這些系統(tǒng)特性使得它收到絕大多數(shù)個人開發(fā)者和中小型企業(yè)的追捧。目前Internet上流行的網(wǎng)站架構(gòu)方式就是LAMP(Linux+Apache+MySQL+PHP)。由于這四個軟件都是免費的或者開源軟件,因此使用者可以不用花一分錢就建立起一個穩(wěn)定、免費的網(wǎng)站系統(tǒng)。4.2 JDBCJDBC,全稱Java Database Connectivi
30、ty 13是一種用于執(zhí)行SQL語句的Java API.提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法。它由一組Java語言編寫的類與接口組成。使用JDBC可以很容易地把SQL語句傳送到任何關(guān)系型數(shù)據(jù)庫中。JDBC API 提供兩種主要接口:一是面向開發(fā)人員的Java.sql程序包,使得Java程序員能夠進行數(shù)據(jù)庫連接,執(zhí)行SQL查詢,并得到結(jié)果集合,另一方向是面向底層數(shù)據(jù)庫廠商的JDBC驅(qū)動,它介于前端應用程序與后端數(shù)據(jù)源之間。根據(jù)其特性不同,大致分為4種類型:1. JDBC-ODBC橋驅(qū)動程序。應用程序通過JDBC-ODBC橋,以調(diào)用ODBC連接數(shù)據(jù)源,由于微軟windows系統(tǒng)中的ODBC大多已支
31、持各種類型的數(shù)據(jù)源,因此在建構(gòu)上較為方便,可直接使用JDK附屬的驅(qū)動程序進行連接。但是由于經(jīng)過了橋的轉(zhuǎn)換,因此在效率上并不十分理想。因此不太適合于企業(yè)應用上。2. Native API 驅(qū)動程序。此類型驅(qū)動程序也需要經(jīng)過類似橋的機制連接數(shù)據(jù)源,所不同的是,此類型的橋為原聲函數(shù)庫,是軟件廠商針對其數(shù)據(jù)庫自行開發(fā)的。由于使用了源生碼,提高了執(zhí)行速度。但如果出錯,修改起來也將非常麻煩。3. Net-Protocol 驅(qū)動程序。此類JDBC驅(qū)動程序會將SQL語句轉(zhuǎn)換成為標準網(wǎng)絡協(xié)議,交由數(shù)據(jù)庫網(wǎng)關(guān)或應用程序服務器處理,應用程序服務器將標準網(wǎng)絡協(xié)議翻譯成為數(shù)據(jù)庫廠商的專有特殊數(shù)據(jù)庫訪問協(xié)議與數(shù)據(jù)庫通信。
32、此類驅(qū)動程序可充分運用程序服務器的安全機制,并且不需要額外的ODBC或者原生函數(shù)庫等機制,因此系統(tǒng)可移植性強。4. Native-Protocol 驅(qū)動程序。此類驅(qū)動程序不需要任何中介機制,直接轉(zhuǎn)換JDBC調(diào)用,成為DBMS的網(wǎng)絡協(xié)議,直接訪問數(shù)據(jù)源,這對Internet應用是高效的,但是由于缺乏安全機制的支持,可能會存在一些潛在的安全隱患。Java與JDBC的結(jié)合,使程序員可以只寫一次數(shù)據(jù)庫應用軟件后,就能在各種不同數(shù)據(jù)庫上運行,真正發(fā)揮了Java“編寫一次,處處運行”的優(yōu)勢。4.3 本系統(tǒng)對數(shù)據(jù)庫連接的封裝本次課題在JDBC的基礎(chǔ)寫了一個管理數(shù)據(jù)庫的封裝類。封裝了與數(shù)據(jù)庫連接方法,數(shù)據(jù)庫數(shù)
33、據(jù)更新方法,類結(jié)構(gòu)如圖11所示。圖 11 數(shù)據(jù)庫管理類本系統(tǒng)所用到的數(shù)據(jù)庫表結(jié)構(gòu)如圖12所示:圖 12 數(shù)據(jù)庫表結(jié)構(gòu)圖 13 好友關(guān)系表結(jié)構(gòu)圖 14 微博評論表結(jié)構(gòu)圖 15 微博信息表結(jié)構(gòu)圖 16微博用戶表結(jié)構(gòu)5 實驗環(huán)境本系統(tǒng)所使用的開發(fā)環(huán)境是windows系統(tǒng)。理論上也支持Linux系統(tǒng)。開發(fā)語言使用的是Java程序語言,開發(fā)工具使用的是eclipse。另外本系統(tǒng)還使用了新浪開放平臺的weibo4J開源代碼和Prefuse的開源框架。引用的外部jar包如圖17所示。圖 17 系統(tǒng)引用jar包6 新浪微博抓取系統(tǒng)實驗方案6.1 功能介紹。本工程模塊用于實現(xiàn)新浪微博的授權(quán)認證和微博信息的抓取。
34、是整個系統(tǒng)的核心功能。其整體功能模塊劃分如圖18所示:圖 18 系統(tǒng)模塊劃分圖6.2 實現(xiàn)方案介紹首先我們需要完成測試用戶的授權(quán)認證過程:我們需要的是打開瀏覽器請求 Key作為參數(shù)傳過去,服務器會跳轉(zhuǎn)到認證頁面。輸入測試用戶的微博賬號和密碼。服務器會跳轉(zhuǎn)到我們之前申請應用時設定的重定向頁面。并且在重定向頁面的URL后面會帶有一個code參數(shù)。例如(初始化配置文件和線程池啟動新浪抓取線程數(shù)據(jù)庫操作類存入數(shù)據(jù)庫中請求public_timeline接口,抓取大廳微博解析返回數(shù)據(jù)請求friends/in_common接口,抓取共同好友請求comments/show接口,抓取微博評論得到用戶信息得到微博
35、信息初始化判斷數(shù)據(jù)是否存在,防止數(shù)據(jù)重復不存在存儲結(jié)束圖 19 新浪微博抓取系統(tǒng)設計方案流程圖6.3 工程模塊各類關(guān)系介紹本項目的源代碼結(jié)構(gòu)如圖20所示:圖20 項目代碼結(jié)構(gòu)圖其中OAuth4Code.java是用來獲取access_token。運行OAuth4Code.Java將會跳完新浪服務器進行認證。運行截圖如圖21所示圖 21 授權(quán)認證過程DBHelp.java是數(shù)據(jù)庫管理類。StartUP.java是新浪抓取模塊的啟動類。WeiboPrefuse.java是用來可視化顯示好友關(guān)系的工具類。prefuse包里面是開源框架prefuse的源碼,weibo4j包里面是新浪微博開放平臺的SD
36、K。里面封裝了一些聯(lián)網(wǎng)請求和返回數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。 另外整個項目還有幾個配置文件需要注意,通過配置這幾個文件,可以很方便的將其中的模塊部分或完全移植到相應的計算機環(huán)境中。在src根目錄下有一個perties文件,該文件用于配置新浪開放平臺應用的相關(guān)信息。其內(nèi)容如圖22所示:圖 22 perties配置文件client_id:是我們申請新浪開放平臺應用是得到應用ID。client_SERCRET: 是我們申請新浪開放平臺應用是得到應密鑰。通過這兩個id可以幫助新浪服務器區(qū)分我們的應用,并且防止我們的應用給他人盜用。redirect_URI:這個當用戶授權(quán)成功
37、后跳轉(zhuǎn)的網(wǎng)頁URI。我們需要一個可以訪問的網(wǎng)頁供用戶授權(quán)成功后跳轉(zhuǎn)。這個重定向URL必須要和我們申請應用的時候設定的重定向URL一致,否則服務器會拋出錯誤導致認證失敗。baseURL:所有接口的URL都是以這個為基礎(chǔ)拼接出來的。access_token:這個是我們以后訪問絕大多是API所必須的參數(shù),他是經(jīng)過我們用戶授權(quán)后返回的有效的access_token。每個token都有一個有效期,一般在開發(fā)階段。每個token的有效期只有1天。一天后我們就需要重新認證獲取新的access_token。當應用提交審核并且通過后,token的有效期將延伸至7天,如果需要更長更久的token有效期,則需要與開
38、放平臺交涉申請,開放平臺會根據(jù)我們應用的狀態(tài)和性質(zhì),調(diào)整token的失效期。accessTokenURL:這個URL是用來獲取access_token的。authorizeURL:這個URL是用來跳轉(zhuǎn)到服務器進行用戶授權(quán)認證的。 在config目錄下還有一個source.conf文件。該文件是用來配置數(shù)據(jù)庫相關(guān)。其大致內(nèi)容如圖23所示:圖 13數(shù)據(jù)庫配置文件這四個參數(shù)可以根據(jù)具體計算機環(huán)境中的數(shù)據(jù)庫配置靈活更改。通過這些配置文件,我們可以不更改代碼就將項目運行在其他計算機上。大大方便了項目的演示和移植。7 社會網(wǎng)絡關(guān)系可視化分析本系統(tǒng)使用了Prefuse11框架對抓取到的社會網(wǎng)絡關(guān)系進行了可視
39、化的分析,其網(wǎng)絡關(guān)系網(wǎng)狀圖如圖24所示:圖 24 社會網(wǎng)絡關(guān)系網(wǎng)狀圖在上圖中,每個節(jié)點代表一個微博用戶。而每條線則代表一個用戶關(guān)系,線條越多說明他/她的好友或者粉絲越多,說明他/她的交際或者知名度很廣。例如上圖中的小S就是臺灣知名藝人兼主持人徐熙娣。她的粉絲是非常多的,所以以她為中心輻射出去的關(guān)系線非常的多。我們可以看到,粉絲越多的人,越在網(wǎng)絡的中心處。這樣體現(xiàn)了顯示生活中的現(xiàn)狀。明星們總是給粉絲們圍在中心處!上圖中還有一些個體脫離了這個網(wǎng)絡。這可能是因為他的好友或者粉絲不多,也可能是因為他/她的交際圈沒有融入到我們所抓取到的這個關(guān)系網(wǎng)中,如果我們抓取足夠多的數(shù)據(jù)的話,我相信,所有人都將融入到整個關(guān)系網(wǎng)中,這也真正說明了六度分割理論的準確性。8 結(jié)束語本系統(tǒng)基于新浪開放平臺和OAuth2.0,通過請求開放平臺API,獲取服務器數(shù)據(jù)并把他解析出來存儲在數(shù)據(jù)庫中。實現(xiàn)了微博數(shù)據(jù),微博評論,微博用戶,微博用戶關(guān)系的抓取。并使用prefuse開源框架對微博用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 佛山規(guī)劃測繪合同范例
- 促進多元化經(jīng)營拓寬業(yè)務領(lǐng)域計劃
- 幼兒心理發(fā)展監(jiān)測方案計劃
- 幼兒園多元智能的教研探討計劃
- 圖書信息存儲管理計劃
- 班主任早晨例會機制計劃
- 品牌建設的基礎(chǔ)與重要性計劃
- 適應性學習在工作中的應用計劃
- 《桐梓縣獅溪煤業(yè)有限公司貴州省桐梓縣文筆山-瓦窯坪煤礦(新建)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 統(tǒng)編版小學語文二年級下冊第18課《太空生活趣事多》精美課件
- 品管圈PDCA案例-介入中心提高手術(shù)患者交接記錄書寫合格率醫(yī)院品質(zhì)管理成果匯報
- 第十七屆山東省職業(yè)院校技能大賽中職組“西式烹飪”賽項規(guī)程
- 華東師范大學《外國人文經(jīng)典(下)》2022-2023學年第一學期期末試卷
- 2024年廣西區(qū)公務員錄用考試《行測》真題卷及答案解析
- 電工(初級)考試試卷及答案
- 儲能電池模組PACK和系統(tǒng)集成項目可行性研究報告
- 2024年安徽省公務員錄用考試《行測》真題及解析
- 2024年陜西省中考數(shù)學試題含答案
- 牙慢性損傷-楔狀缺損
- JTJ034-2000 公路路面基層施工技術(shù)規(guī)范
- 2024-2030年中國光伏建筑一體化(BIPV)市場規(guī)模預測與競爭格局分析研究報告
評論
0/150
提交評論