陳向陽,陳麗萍,姜振國
(河北大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,保定 071000)
基于API接口的騰訊微博數(shù)據(jù)挖掘
陳向陽,陳麗萍,姜振國
(河北大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,保定071000)
微博是近幾年發(fā)展起來的一個(gè)信息交互平臺(tái),通過該平臺(tái)可以接收或發(fā)送微博信息。用戶可以通過關(guān)注感興趣的人,接收關(guān)注人的信息,也可以在計(jì)算機(jī)或移動(dòng)通信終端發(fā)送自己感興趣的信息,其簡單快捷的操作方式和發(fā)布信息的隨時(shí)隨地性,使這種互動(dòng)形式的信息傳播成為互聯(lián)網(wǎng)的一大亮點(diǎn),是Web 2.0時(shí)代下產(chǎn)生的一種新型社交網(wǎng)絡(luò)。Twitter是美國最大的微博網(wǎng)站,自2006年創(chuàng)建以來[1],微博的使用者就增長迅猛,僅2009年Twitter的使用者就增長了25倍多,和其他社交網(wǎng)站Facebook以及LinkedIn相比,增長率是二者總和的10倍[2]。國內(nèi)的新浪微博和騰訊微博在開通之初,用戶數(shù)量也增長迅猛,均在不足一年半的時(shí)間內(nèi)超過1億用戶。中國互聯(lián)網(wǎng)信息中心(CNNIC)報(bào)告顯示,至2011年底,中國微博用戶達(dá)到2.5億[3]。
微博的用戶群基數(shù)巨大,信息傳播迅速,而且微博平臺(tái)上有大量的媒體和商家用戶,這些用戶之間的關(guān)系和信息的傳播方式,對商品的推介和輿情的監(jiān)控有重要意義,因此基于微博數(shù)據(jù)的分析和研究已成為一個(gè)非常有價(jià)值的研究方向。國外多以Twitter為對象來研究微博。Teutte等人[4]分析了Twitter的網(wǎng)絡(luò)動(dòng)態(tài)性,通過對出度和入度的增長和網(wǎng)絡(luò)使用密度等的分析,研究其對微博網(wǎng)絡(luò)變化的影響。Shen[5]等人研究了微博中Spam信息的傳播方式,并通過文本挖掘?qū)ξ⒉┬畔⒌膬?nèi)容進(jìn)行了分析。近年來國內(nèi)對微博的研究也越來越多,楊長春[6]等從用戶是否活躍,博文是否被轉(zhuǎn)載和評論設(shè)計(jì)了新的博主評價(jià)指標(biāo),并把該指標(biāo)作為PageRank算法的因子提出來不同的核心用戶發(fā)現(xiàn)算法。廉捷等[7]提出了采用新浪微博API來取得新浪微博數(shù)據(jù)的方法,并與傳統(tǒng)的的網(wǎng)絡(luò)爬蟲技術(shù)相比較,二者結(jié)合可以高效完整地獲取新浪微博數(shù)據(jù)。
近幾年國內(nèi)對微博的研究越來越深入,從定性研究逐漸進(jìn)入定量分析,對數(shù)據(jù)的需求也就越來越多,但多數(shù)文章并無明確說明微博信息的提取方式,使得進(jìn)行微博研究的第一項(xiàng)工作“信息獲取”模糊不清。因此本文著重研究微博信息的獲取方式。大多數(shù)微博信息挖掘以新浪微博數(shù)據(jù)為研究對象,但近期新浪微博提高的數(shù)據(jù)獲取門檻,普通的研究者無法從其獲取數(shù)據(jù),所以本文以同樣有代表性的騰訊微博平臺(tái)為研究對象,研究其數(shù)據(jù)挖掘方式。
騰訊微博開放平臺(tái)為開發(fā)者提供了獲取微博數(shù)據(jù)的接口。利用這些API接口,用戶可以方便地獲取需要的微博信息,或在微博中傳播信息。
獲取互聯(lián)網(wǎng)的數(shù)據(jù)一般是通過網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)的。但網(wǎng)絡(luò)爬蟲對計(jì)算機(jī)的配置和網(wǎng)速有較高的要求,運(yùn)行效率較低。而騰訊微博開放API接口可以更加簡潔地獲取相應(yīng)的數(shù)據(jù),為程序高效獲取微博數(shù)據(jù)提供保障。因此文中研究使用API接口獲取微博信息的方法及限制。
騰訊微博官方提供的API接口共有22類,幾乎涵蓋了所有的微博信息操作方法,如表1所示。同時(shí)官方也對API的調(diào)用權(quán)限進(jìn)行了限制,為了均衡服務(wù)器的負(fù)載,對用戶進(jìn)行分級。將用戶權(quán)限分為三級:初級授權(quán)、高級授權(quán)和騰訊合作方授權(quán)。其中初級授權(quán)每個(gè)API的調(diào)用次數(shù)為不超過1000次/小時(shí)。

表1 騰訊微博接口
為了能夠使用微博信息平臺(tái),獲取需要的微博信息,用戶需要獲得信息平臺(tái)的資源授權(quán),過程如下:
(1)為了能夠獲得使用騰訊API的資格,我們必須向官方申請成為開發(fā)者。用戶只需在騰訊微博開放平臺(tái)網(wǎng)站上登錄QQ賬號并申請成為開發(fā)者,然后提交詳細(xì)信息后即可。在1~2工作日內(nèi)申請就會(huì)被通過,獲得使用騰訊微博信息的許可權(quán),成為騰訊微博的開發(fā)者。
(2)創(chuàng)建應(yīng)用,獲取使用API的權(quán)限,即得到API接口驗(yàn)證序號 (App Key)和API接口密鑰 (App Secret),對用戶發(fā)出的請求進(jìn)行數(shù)字簽名。
(3)獲取OAUTH認(rèn)證。所謂認(rèn)證是指第三方軟件不知道用戶的用戶名和密碼,為用戶申請獲得提供方資源的授權(quán)。OAUTH認(rèn)證是獲取用戶資源授權(quán)的一個(gè)安全、公開而又簡單的標(biāo)準(zhǔn)。當(dāng)前,騰訊微博對第三方授權(quán)采用的是OAUTH 2.0協(xié)議。獲取認(rèn)證就是獲取訪問令牌 (Access Token),是第三方獲得資源授權(quán)的憑證,是第三方訪問API資源的鑰匙。其基本流程如圖1所示:

圖1 獲取OAUTH認(rèn)證的流程
其中,對于彈出的回調(diào)信息是如下的URL:
http://www.myurl.com/example?code=CODE&openid =O PENID&openkey=OPENKEY
其意義如下表2所示:

表2 回調(diào)信息字段意義
為方便微博API的調(diào)用,騰訊為用戶提供了一個(gè)SDK,使用權(quán)限認(rèn)證、數(shù)據(jù)采集和數(shù)據(jù)分析等各項(xiàng)功能都被打包在其中。SDK是以API為基礎(chǔ)的,因此基于SDK開發(fā)的工程能極大地減少開發(fā)程序的工作量。但作為一種新的網(wǎng)絡(luò)應(yīng)用,微博的SDK開發(fā)并不完善,使用SDK時(shí)可能會(huì)出現(xiàn)一些功能性的錯(cuò)誤,所以應(yīng)區(qū)別對待,必要時(shí)進(jìn)行代碼修改和完善。
目前已開發(fā)并發(fā)布的SDK包括支持Java、C++等多種語言版本,本文采用Java語言作為開發(fā)工具。例如:在使用騰訊官方API提供的SDK包,抓取的數(shù)據(jù)在Eclipse下顯示是亂碼,所以必須對其進(jìn)行修改。可將SDK中的 QHttpClient.java類的http請求方法中的以下部分代碼進(jìn)行修改


這樣從服務(wù)器讀來的數(shù)據(jù)才可使用。
由于騰訊微博的API對使用者的請求次數(shù)有限定,所以本文在獲取數(shù)據(jù)時(shí),一方面通過程序控制訪問頻率,另一方面在每一次訪問中盡可能多地取得系統(tǒng)允許的信息量。程序需要通過線程控制訪問頻率,因?yàn)槿绻虝r(shí)間內(nèi),程序運(yùn)行中較頻繁地調(diào)用API接口,雖然總的訪問次數(shù)未超過每小時(shí)的1000次,但因?yàn)樵谶@段時(shí)間內(nèi)高度頻繁地調(diào)用,系統(tǒng)會(huì)認(rèn)為用戶訪問達(dá)到上限,所以通常每調(diào)用100次請求后,程序?qū)和追昼姡瑥亩苊獬^騰訊API對于用戶請求的限制。當(dāng)請求訪問次數(shù)達(dá)到API請求上限時(shí)就停下來,等下一個(gè)允許時(shí)間段再讀取。而在每一次信息讀取中,采用不同的函數(shù)方法效率也會(huì)不同。例如為了能得到一個(gè)人好友列表中所有的信息,如果使用info方法獲取用戶信息,每次只能得到一個(gè)用戶的信息,而用fanslist可以得到30個(gè)用戶信息。這樣就減少了API的調(diào)用次數(shù),從而能在相同調(diào)用次數(shù)下得到更多的用戶信息。
獲得OAUTH身份認(rèn)證,并通過騰訊API可以根據(jù)請求返回特定的XML或JSON文件。微博中用戶狀態(tài)與信息,可能包含一些個(gè)性化字符格式,這些字符會(huì)導(dǎo)致整個(gè)XML文檔無法被正確解析,因此返回方式采取JSON格式更具穩(wěn)定性[7]。
JSON數(shù)據(jù)格式非常簡單,文件沒有明顯的格式信息,用來傳輸信息簡單靈活,如:
tweet:用戶最近發(fā)的一條微博
{text:微博內(nèi)容,from:來源,id:微博id,timestamp:微博時(shí)間戳}
和結(jié)構(gòu)化的XML文件不同,復(fù)雜的JSON文件沒有使用格式化標(biāo)簽來標(biāo)記有意義的內(nèi)容,對于人來說處理起來不太容易,但由于JSON文件結(jié)構(gòu)簡單,因此通過計(jì)算機(jī)強(qiáng)大的處理能力來分析JSON文件具有很強(qiáng)的優(yōu)勢。另外JSON文件中因?yàn)闆]有屬性標(biāo)簽,所以和XML文件對比,同樣內(nèi)容的查詢結(jié)果,返回的XML文件要比JSON文件更大,因此作為海量微博信息的媒介工具,JSON文件更合適。
例如騰訊FRIENDSAP中用戶粉絲列表方法聲明為:userFanslist(oAuth,format,reqnum,startindex,name,fo-penid,mode,install)。其中參數(shù)format需要設(shè)置成JSON,返回結(jié)果為JSON格式的字符串,然后通過解析程序?qū)SON格式的字符串進(jìn)行解析獲得用戶需要的信息。將解析出來的信息存儲(chǔ)到數(shù)據(jù)庫,即可進(jìn)行相關(guān)的數(shù)據(jù)分析和研究。
基于API接口提取信息效率較高,方便迅捷。但普通用戶無法自由地從微博服務(wù)商那里獲得完整的API,因此使用API的方式只能獲得部分微博數(shù)據(jù)。如在騰訊微博中,很多重要查詢功能的API是不開放的,同時(shí)對于開放的API,每次查詢的返回結(jié)果也有上限,所以每次查詢需要記錄查詢位置,往往會(huì)出現(xiàn)重復(fù)查詢結(jié)果,需要人工篩選。微博研究最關(guān)心的問題是那些具有大量信息的用戶,而這些限制正好阻礙了研究信息的獲取。同時(shí)對用戶每小時(shí)的訪問次數(shù)也有限制,所以為了獲得足夠的研究數(shù)據(jù),用戶往往需要較長的數(shù)據(jù)獲取時(shí)間。因此用戶在獲取微博信息時(shí)應(yīng)該結(jié)合其他的方法如爬蟲等,來完善數(shù)據(jù)信息。
[1]Pieter N,Michiel H.Mining Twitter in the Cloud:A Case Study[C].Proceedings of the 2010 IEEE 3rd International Conference on Cloud Computing,2010:107~114
[2]Abraham R,Martinez T.Twitter:Network Properties Analysis[C].Proceedings of the CONIELECOMP 2010-20th International Conference on Electronics Communications and Computers,2010:180~184
[3]文坤梅,徐帥,李瑞軒等.微博及中文微博信息處理研究綜述[J].中文信息學(xué)報(bào),2012,26(6):27~37
[4]Teutte G,Kleinberg J,Watts D J.The Structure of Information Pathways in a Social Communication Network[C].Proceedings of SIGKDD,2008:435~443
[5]Shen Yang,Li Shu-chen,Ye Xiao-xiao,et al.Content Mining and Network Analysis of Microblog Spam[J].Journal of Convergence Information Technology,2010,5(1):135~140
[6]楊長春,俞克非,葉施仁等.一種新的中文微博社區(qū)博主影響力的評估方法[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(25):229~233
[7]廉捷,周欣,曹偉等.新浪微博數(shù)據(jù)挖掘方案[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,51(10):1300~1305
Microblog;API Interface;Information Extraction
Data Mining of Tencent Microblog Based on API Interface
CHEN Xiang-yang,CHEN Li-ping,JIANG Zhen-guo
(School of Computer Science and Technology,Hebei University,Baoding071000)
1007-1423(2015)09-0047-04
10.3969/j.issn.1007-1423.2015.09.011
陳向陽(1977-),女,河南三門峽人,碩士研究生,講師,研究方向?yàn)閿?shù)據(jù)挖掘
陳麗萍(1974-),女,河北保定人,碩士研究生,講師,研究方向?yàn)閿?shù)據(jù)挖掘
姜振國(1992-),男,河北保定人,本科,學(xué)生,研究方向?yàn)檐浖こ?/p>
2015-01-04
2015-02-10
以騰訊微博為對象,介紹它提供的API接口,以及如何成為授權(quán)用戶和微博信息提取及處理的方法。利用API接口可以高效迅捷地獲取微博信息,但微博服務(wù)商并不完全開放API接口,而且對單位時(shí)間內(nèi)的訪問次數(shù)也有限制,因此對于所需的關(guān)鍵微博信息如果無法通過API得到時(shí),需要結(jié)合其他方法獲取。
微博;API接口;信息挖掘
保定科技局計(jì)劃項(xiàng)目(No.13ZG017)
Takes Tencent microblog as the research object,introduces the API interface of it,and the method of becoming an authorized user and microblog information extraction and processing.Microblog can access the information efficiently and quickly,Microblog API interface service doesn't completely open API interface,but also has a restriction on the access times of unit of time,so for the desired key microblog information if it can't get through API,then needs to combine with other methods to obtain.