鄧文萍
摘要:本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)微博用戶信息爬取與分析系統(tǒng),利用Cookie實(shí)現(xiàn)了用戶的模擬登錄,使用Python語(yǔ)言的Rquests、lxml等函數(shù)庫(kù),爬取、處理了該微博用戶數(shù)據(jù),并以“央視綜藝國(guó)家寶藏”為例,從微博發(fā)布動(dòng)作偏好、微博信息特征、微博關(guān)鍵詞等方面展開(kāi)了分析,獲取了一些有趣的發(fā)現(xiàn),為進(jìn)一步用戶分析與畫像打下基礎(chǔ)。
關(guān)鍵詞:新浪微博;爬取分析;Python
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)07-0096-03
0 引言
新浪微博是目前我國(guó)最大的短消息社交平臺(tái),據(jù)新浪微博2017年全年財(cái)報(bào)稱,截至2017年12月,微博月活躍用戶增至3.92億。社交用戶的增多,意味著信息的極具爆炸,基于微博數(shù)據(jù)的社交用戶行為分析與畫像引起了人們的關(guān)注[1]。該技術(shù)能夠?qū)τ脩暨M(jìn)行畫像,用于社交群體發(fā)現(xiàn)[2]、個(gè)性用戶發(fā)現(xiàn)[3]等。
本文使用Python語(yǔ)言,通過(guò)模擬用戶登錄,實(shí)現(xiàn)一種針對(duì)新浪微博的爬蟲(chóng),并對(duì)獲得的數(shù)據(jù)進(jìn)行有效地分析。該文設(shè)計(jì)并實(shí)現(xiàn)了新浪微博爬蟲(chóng)程序,以微博用戶“央視綜藝國(guó)家寶藏”為例,對(duì)他發(fā)布的微博內(nèi)容進(jìn)行了全部抓取,并從微博發(fā)布行為、微博信息特征、微博關(guān)鍵詞等方面,進(jìn)行了數(shù)據(jù)分析,為用戶分析與畫像打下基礎(chǔ)。
1 爬蟲(chóng)系統(tǒng)設(shè)計(jì)
該爬蟲(chóng)程序的工作流程如圖1所示,主要步驟為:
(1)登錄微博:新浪微博要求用戶訪問(wèn)微博數(shù)據(jù)之前必須登錄,那么爬蟲(chóng)程序面臨的首要任務(wù)是模擬登錄。本文利用Cookie的特性,事先通過(guò)瀏覽器的方式,登錄新浪微博,并正確輸入用戶名、口令,從而事先瀏覽器的登錄;當(dāng)成功登陸后,新浪微博服務(wù)器會(huì)記錄登錄的狀態(tài),經(jīng)加密后,使用Response的方式,發(fā)送給客戶端,從而存儲(chǔ)于本地客戶端的Cookie中。當(dāng)本文編寫的Python爬蟲(chóng),需要登錄新浪微博時(shí),首先讀取已存儲(chǔ)于本地的Cookie,并發(fā)送給新浪微博服務(wù)器。而該服務(wù)器檢查這個(gè)Cookie,可以認(rèn)定客戶端的合法身份,從而實(shí)現(xiàn)用戶對(duì)新浪微博的成功登錄。(2)訪問(wèn)待抓取頁(yè)面:該模塊訪問(wèn)被抓取微博用戶的各類信息界面,利用Requests庫(kù)下載待抓取頁(yè)面的html代碼。(3)下載、解析、抽取信息:使用lxml等python庫(kù)解析頁(yè)面,并根據(jù)預(yù)先定制的規(guī)則,抽取有關(guān)信息。(4)根據(jù)第(3)步驟的信息提取結(jié)果,如若信息內(nèi)具有下一次待抓取的頁(yè)面鏈接,則回至網(wǎng)頁(yè)下載模塊,重新進(jìn)行下載、解析。(5)保存至數(shù)據(jù)庫(kù):待抓取完畢后,將所有信息保存至數(shù)據(jù)庫(kù)。
2 微博用戶數(shù)據(jù)分析
本文針對(duì)新浪微博用戶“央視綜藝國(guó)家寶藏”進(jìn)行研究分析,抓取了其全部微博內(nèi)容。該微博用戶ID號(hào)6339534350,2017年8月22日第一次發(fā)布微博消息;截至2019年7月29日,它已發(fā)布了1490條信息,轉(zhuǎn)發(fā)了339條消息,有粉絲2260078人,累計(jì)獲得1481948點(diǎn)贊數(shù)、2360089轉(zhuǎn)發(fā)量、462758評(píng)論數(shù)。
2.1 微博發(fā)布行為分析
該部分主要研究“央視綜藝國(guó)家寶藏”發(fā)布微博信息的次數(shù)和時(shí)間等因素,深入分析它的微博發(fā)布行為特征。如圖2中所示,該圖為隨時(shí)間變化的微博發(fā)布次數(shù),其橫坐標(biāo)軸為日期,范圍為2017年8月22日至2019年7月29日;縱坐標(biāo)軸則為微博消息的發(fā)布次數(shù)。
從圖中可以看出,該微博用戶發(fā)布微博消息有明顯的規(guī)律性,它幾乎每天都發(fā)送微博消息,但有兩個(gè)明顯的高峰期,分別為2017年12月至2018年2月期間和2018年12月至2019年2月。這兩個(gè)高峰期是與《國(guó)家寶藏·第一季》和《國(guó)家寶藏·第二季》的播出時(shí)間是重合的,其中《國(guó)家寶藏·第一季》自2017年12月3日起在中央電視臺(tái)播出,共有十期節(jié)目,每周日播出一期,于2018年2月11日結(jié)束;同樣地,《國(guó)家寶藏·第二季》自2018年12月9日起播出,共有十期節(jié)目,每周日播出一期,于2019年2月2日結(jié)束。在這兩個(gè)節(jié)目播出周期內(nèi),平均每日微博發(fā)送量分別為8.69、6.57,遠(yuǎn)高于其他時(shí)期。
如圖3所示,橫坐標(biāo)軸為發(fā)表時(shí)間,縱坐標(biāo)軸為微博發(fā)布的次數(shù)。從圖中可以看出,該微博用戶發(fā)布微博信息的時(shí)間集中在每日的9時(shí)到22時(shí),而在在23時(shí)至次日8時(shí)的時(shí)間段內(nèi)沒(méi)有發(fā)表任何內(nèi)容。同時(shí),還可以看出整點(diǎn)是發(fā)布微博的高峰,12時(shí)、14時(shí)、16時(shí)、18時(shí)、20時(shí)、22時(shí)各發(fā)表了60次、69次、65次、73次、49次和46次。
2.2 微博信息分析
2.2.1 點(diǎn)贊數(shù)分析
通過(guò)按照微博發(fā)布的先后,給微博消息進(jìn)行排序,列出每條微博的點(diǎn)贊數(shù),如圖4所示。微博消息的總點(diǎn)贊數(shù)均值為994.60,總體標(biāo)準(zhǔn)差為1868.26,顯示著各微博點(diǎn)贊數(shù)極不均衡。從圖4可以看出,個(gè)別微博的點(diǎn)贊數(shù)極高,高于2萬(wàn)點(diǎn)贊數(shù)的微博數(shù)目為6個(gè),高于1萬(wàn)低于2萬(wàn)點(diǎn)贊數(shù)的微博數(shù)目為3個(gè),而點(diǎn)贊數(shù)低于1000的微博占總體的74.77。
為了直觀地觀察這一現(xiàn)象,本文將微博序號(hào)按照點(diǎn)贊數(shù)大小進(jìn)行排序,如圖5所示。從圖可以看出,該圖形從橫坐標(biāo)一開(kāi)始時(shí),占據(jù)較高縱坐標(biāo),接著極具下降,形成拖著長(zhǎng)長(zhǎng)尾巴的形狀。這說(shuō)明微博點(diǎn)贊數(shù)服從冪律分布[4],即少數(shù)高贊微博受到人們的極大關(guān)注,而大部分微博受關(guān)注度一般。該分布的一個(gè)通俗解釋就是馬太效應(yīng),即窮者越窮富者越富。
2.2.2 評(píng)論數(shù)分析
圖6中,橫坐標(biāo)為按時(shí)間排序的微博序號(hào),縱坐標(biāo)為該微博對(duì)應(yīng)的評(píng)論數(shù)。微博消息的總評(píng)論數(shù)均值為310.58,總體標(biāo)準(zhǔn)差為3091.64,顯示著各微博評(píng)論數(shù)極不均衡。從該圖可以看出,評(píng)論數(shù)高于1萬(wàn)的微博數(shù)目為1個(gè),高于5千低于1萬(wàn)的微博數(shù)目為4個(gè),而評(píng)論數(shù)低于300的微博占總體的84.56%。這說(shuō)明微博評(píng)論數(shù)同樣服從冪律分布。
圖7中,橫坐標(biāo)為按時(shí)間排序的微博序號(hào),縱坐標(biāo)為該微博對(duì)應(yīng)的轉(zhuǎn)發(fā)數(shù)。微博消息的總轉(zhuǎn)發(fā)數(shù)均值為1583.95,總體標(biāo)準(zhǔn)差為22209.09,顯示著各微博評(píng)論數(shù)比點(diǎn)贊數(shù)和評(píng)論數(shù)更不均衡。從該圖可以看出,轉(zhuǎn)發(fā)數(shù)高于10萬(wàn)的微博數(shù)目為3個(gè),高于1萬(wàn)低于10萬(wàn)的微博數(shù)目為30個(gè),而轉(zhuǎn)發(fā)數(shù)低于1500的微博占總體的91.07%。
從微博的點(diǎn)贊數(shù)、評(píng)論數(shù)和轉(zhuǎn)發(fā)數(shù)分析,我們可以看出微博的平均值還是比較高的,說(shuō)明”央視綜藝國(guó)家寶藏”用戶的影響力巨大,同時(shí)也能看到這三個(gè)值極不均衡,服從冪律分布。
2.3 微博關(guān)鍵詞分析
為了更好地分析微博內(nèi)容,本文對(duì)抓取到的微博內(nèi)容進(jìn)行關(guān)鍵詞抽取與展示。本文使用了jieba分詞技術(shù)[5],處理得到微博內(nèi)容的所有詞組,并去除停用詞,接著使用wordcloud函數(shù)庫(kù),制作了詞云。如圖8所示,主要的關(guān)鍵詞有“國(guó)家”、“寶藏”、“CCTV”、“國(guó)寶”、“博物館”、“頻道”、“中國(guó)”、“視頻”等詞。
3 結(jié)語(yǔ)
該文設(shè)計(jì)并實(shí)現(xiàn)了針對(duì)新浪微博用戶的爬蟲(chóng)程序,并對(duì)抓取到的信息進(jìn)行分析,以“用戶為例,從微博發(fā)布行為、微博信息特征、微博關(guān)鍵詞等四個(gè)方面,進(jìn)行了數(shù)據(jù)研究與分析。經(jīng)過(guò)數(shù)據(jù)分析,本文得到如下信息:(1)微博用戶發(fā)布的有著較為明顯的整點(diǎn)發(fā)布偏好;(2)博主的微博的點(diǎn)贊數(shù)、評(píng)論數(shù)以及轉(zhuǎn)發(fā)數(shù)服從冪律分布;(3)博主發(fā)布的微博內(nèi)容的關(guān)鍵詞主要有“國(guó)家”、“寶藏”、“CCTV”、“國(guó)寶”、“博物館”、“頻道”、“中國(guó)”、“視頻”等。這些發(fā)現(xiàn)將為用戶畫像打下基礎(chǔ)。
參考文獻(xiàn)
[1] 曾鴻,吳蘇倪.基于微博的大數(shù)據(jù)用戶畫像與精準(zhǔn)營(yíng)銷[J].現(xiàn)代經(jīng)濟(jì)信息,2016(16):314-316.
[2] 解,汪小帆.復(fù)雜網(wǎng)絡(luò)中的社團(tuán)結(jié)構(gòu)分析算法研究綜述[J].復(fù)雜系統(tǒng)與復(fù)雜性科學(xué),2005,2(3):1-12.
[3] 鄧勝利,楊麗娜.用戶個(gè)性特征對(duì)信息行為影響的研究進(jìn)展[J].情報(bào)理論與實(shí)踐,2014,37(5):119-123.
[4] 羅斌,陳翔.冪律特性在新浪微博個(gè)性化推薦中的應(yīng)用研究[J].計(jì)算機(jī)工程與科學(xué),2018,40(04):165-173.
[5] 杜雷,垂直搜索引擎網(wǎng)絡(luò)爬蟲(chóng)的研究與設(shè)計(jì)[D].北京郵電大學(xué),2015.
數(shù)字技術(shù)與應(yīng)用2019年7期