微博[1],即微型博客的簡(jiǎn)稱,是一個(gè)基于用戶關(guān)系的信息分享、傳播以及獲取平臺(tái),用戶可以通過(guò)WEB、WAP以及各種客戶端組件個(gè)人社區(qū),以140字左右的文字更新信息,并實(shí)現(xiàn)即時(shí)分享。
摘要:微博已成為網(wǎng)絡(luò)信息的重要來(lái)源,該文分析了微博信息采集的相關(guān)方法與技術(shù),提出了基于API的信息采集方法,然后設(shè)計(jì)了一個(gè)信息采集系統(tǒng),能夠?qū)π吕宋⒉┑南嚓P(guān)信息進(jìn)行采集。實(shí)驗(yàn)測(cè)試表明,該信息采集系統(tǒng)能夠快速有效地采集新浪微博信息。
關(guān)鍵詞:新浪微博,微博接口,信息采集,C#語(yǔ)言
中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心的《第31次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告》顯示,截至2012年12月底,截至2012年12月底,我國(guó)微博用戶規(guī)模為3.09億,較2011年底增長(zhǎng)了5873萬(wàn),網(wǎng)民中的微博用戶比例較上年底提升了六個(gè)百分點(diǎn),達(dá)到54.7%[2]。隨著微博網(wǎng)絡(luò)影響力的快速擴(kuò)大,政府部門、學(xué)校、知名企業(yè)、社會(huì)公眾人物均開(kāi)通了微博。隨著公眾的參與,微博成為了一個(gè)強(qiáng)大的虛擬社會(huì),微博已經(jīng)是網(wǎng)絡(luò)信息的重要來(lái)源,如何用于快速有效地采集微博信息已經(jīng)成為一個(gè)具有重要應(yīng)用價(jià)值的研究。
1研究方法與技術(shù)路線
國(guó)內(nèi)的微博用戶主要是新浪微博,因此本文擬以新浪微博為例,設(shè)計(jì)研究方法與技術(shù)路線。通過(guò)分析國(guó)內(nèi)外的科技文獻(xiàn)與實(shí)際應(yīng)用案例,發(fā)現(xiàn)目前針對(duì)新浪微博的信息采集方法主要有兩類:一種是“模擬登陸”、“網(wǎng)頁(yè)爬蟲(chóng)”[3]、“網(wǎng)頁(yè)內(nèi)容解析”[4]三種技術(shù)結(jié)合的信息采集方法,二是基于新浪微博開(kāi)放平臺(tái)的API文檔,開(kāi)發(fā)者自行編寫(xiě)程序調(diào)用微博的API,進(jìn)行微博信息的采集。對(duì)于第一種方法,難度比較高,研究技術(shù)復(fù)雜,特別是“模擬登陸”這個(gè)步驟,需要隨時(shí)跟蹤新浪微博的登陸加密算法,新浪微博的登陸加密算法的改變,就會(huì)造成“網(wǎng)頁(yè)爬蟲(chóng)”的失敗,最后導(dǎo)致采集不到微博信息。同時(shí),“網(wǎng)頁(yè)爬蟲(chóng)”采集到的網(wǎng)頁(yè)需要進(jìn)行“網(wǎng)頁(yè)內(nèi)容解析”,效率與性能相比基于API的數(shù)據(jù)采集存在明顯的差距;谝陨弦蛩,因此本文擬采用第二種方式進(jìn)行研究。
基于新浪微博開(kāi)放平臺(tái)API文檔的微博信息采集系統(tǒng),主要采用了兩個(gè)研究方法:文檔分析法和實(shí)驗(yàn)測(cè)試法。文檔分析法:參考新浪微博開(kāi)放平臺(tái)的API文檔,把這些API說(shuō)明文檔編寫(xiě)為單獨(dú)的接口類文件。實(shí)驗(yàn)測(cè)試法:在VS.NET2010平臺(tái)[5],以C/S模式開(kāi)發(fā)程序來(lái)調(diào)用接口類,采集微博返回的JOSN數(shù)據(jù)流,實(shí)現(xiàn)數(shù)據(jù)采集的相關(guān)測(cè)試與開(kāi)發(fā)。
根據(jù)以上兩個(gè)研究方法,設(shè)計(jì)本研究的技術(shù)路線:首先是申請(qǐng)新浪微博開(kāi)放平臺(tái)AppKey和AppSecret,審核通過(guò)之后,閱讀與理解API文檔,把API文檔說(shuō)明具體編寫(xiě)成API接口代碼類(c#語(yǔ)言),然后來(lái)測(cè)試OAuth2.0的認(rèn)證,通過(guò)認(rèn)證之后,可以獲取到AccessToken,這樣就有權(quán)限來(lái)調(diào)用API的各種功能接口,然后通過(guò)POST或GET方式調(diào)用API接口,最后返回JOSN數(shù)據(jù)流,最后解析這個(gè)數(shù)據(jù)流可以保存為本地文本文件或數(shù)據(jù)庫(kù)中,技術(shù)路線詳細(xì)如圖1所示。
2研究?jī)?nèi)容設(shè)計(jì)
微博信息采集系統(tǒng)功能結(jié)構(gòu)圖2所示,本系統(tǒng)被分為七個(gè)部分,分別為:微博接口認(rèn)證、微博用戶登錄、登錄用戶發(fā)微博、采集當(dāng)前登錄用戶信息、采集他人用戶信息、采集他人用戶微薄、采集學(xué)校信息、采集微博信息內(nèi)容。
1)微博接口認(rèn)證:新浪微博大部分API的訪問(wèn)如發(fā)表微博、獲取私信,關(guān)注都需要用戶身份,目前新浪微博開(kāi)放平臺(tái)用戶身份鑒權(quán)有OAuth2.0和BasicAuth(僅用于應(yīng)用所屬開(kāi)發(fā)者調(diào)試接口),新版接口也僅支持這兩種方式[6]。所以系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)的第一步,需要做一個(gè)微博接口認(rèn)證功能。
2)微博用戶登錄:通過(guò)認(rèn)證之后,在新浪微博注冊(cè)過(guò)的用戶都可以在本系統(tǒng)登錄,并可以通過(guò)本系統(tǒng)發(fā)布微博。
3)采集登錄用戶信息:用戶登錄以后,可以通過(guò)本系統(tǒng)查看自己的賬號(hào)信息以及自己發(fā)布的微博信息與自己關(guān)注用戶的微博信息。
4)采集他人用戶信息:這個(gè)功能主要是通過(guò)輸入微博用戶的昵稱,可以采集到該昵稱用戶的賬號(hào)信息,比如他有多少粉絲,他關(guān)注了哪些人,他被多少人關(guān)注,這些信息在微博中也很有實(shí)際采集的價(jià)值。
5)采集他人用戶的微博:這個(gè)功能也是通過(guò)微博用戶的昵稱,來(lái)采集改用戶所發(fā)的所有微博信息,本功能的目的是以后可以擴(kuò)展為每隔一個(gè)時(shí)間段,自動(dòng)采集目標(biāo)集合中的多個(gè)微博用戶的微博信息到本地,用于數(shù)據(jù)內(nèi)容分析。
6)采集學(xué)校信息:這個(gè)功能通過(guò)學(xué)校名稱的模糊查詢,來(lái)采集學(xué)校在微博中的賬號(hào)ID,學(xué)校所在區(qū)域,學(xué)校的類型信息,這個(gè)是采集學(xué)校在微博影響力的基礎(chǔ)數(shù)據(jù)。
7)采集微博信息內(nèi)容:可以按微博內(nèi)容的關(guān)鍵詞來(lái)查詢,采集這個(gè)包含這個(gè)關(guān)鍵詞的微博信息。但是由于這個(gè)API接口調(diào)用需要高級(jí)權(quán)限,在本系統(tǒng)還沒(méi)完全發(fā)布之前和沒(méi)有通過(guò)新浪微博開(kāi)放平臺(tái)審核之前,都無(wú)法直接測(cè)試與使用。
3主要功能的實(shí)現(xiàn)
3.1微博接口認(rèn)證功能
新浪微博大部分API的訪問(wèn)需要用戶身份驗(yàn)證,本系統(tǒng)采用OAuth2.0方式設(shè)計(jì)微博接口認(rèn)證功能,新浪微博認(rèn)證流程如圖3所示。
4總結(jié)
本文主要從微博信息采集的方法與技術(shù)上進(jìn)行了一系列的研究,然后設(shè)計(jì)開(kāi)發(fā)了一個(gè)基于API的新浪微博信息采集系統(tǒng),實(shí)現(xiàn)了微博基本信息的采集,在一定程度上解決了微博信息采集的自動(dòng)化以及采集結(jié)果數(shù)據(jù)的格式標(biāo)準(zhǔn)化。但是,本系統(tǒng)目前的微博信息采集方式只能通過(guò)輸入單個(gè)“關(guān)鍵詞”進(jìn)行唯一匹配采集,還沒(méi)有具備多個(gè)“檢索詞”批量采集,也沒(méi)有具備“主題型”微博信息采集的功能,因此下一步的研究工作是如何設(shè)計(jì)一個(gè)主題模型,以優(yōu)化本系統(tǒng)。
參考文獻(xiàn):
[1]文瑞.微博之知[J].軟件工程師,2009(12):19-20.
[2]中國(guó)互聯(lián)網(wǎng)絡(luò)信息中心.第31次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[EB/OL].(2013-01-15).http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201301/t20130115_38508.htm.
[3]羅剛,王振東.自己動(dòng)手寫(xiě)網(wǎng)絡(luò)爬蟲(chóng)[M].北京:清華大學(xué)出版社,2010.
[4]于滿泉,陳鐵睿,許洪波.基于分塊的網(wǎng)頁(yè)信息解析器的研究與設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2005,25(4):974-976.
[5]NickRandolph,DavidGardner,ChrisAnderson,etal.ProfessionalVisualStudio2010[M].Wrox,2010.
[6]新浪微博開(kāi)放平臺(tái).授權(quán)機(jī)制說(shuō)明[EB/OL].(2013-01-19).http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E.
轉(zhuǎn)載請(qǐng)注明來(lái)自:http://www.jinnzone.com/jisuanjiwangluolw/26920.html