鄧文萍



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