怎樣提取新浪微博的數據?
看話題時間已經是好幾年前了,題主應該已經會了吧。正好最近用Fiddler抓包微博移動端獲取API,再python爬蟲爬取數據,前幾天爬了微博:老樹畫畫幾乎全部的微博,貼貼文章,後來人有感興趣的可以看看,歡迎探討:
老樹微博,三千詩與畫
一、前言
1、項目介紹
本次用fiddler抓包移動端(ipad)微博,再用python爬蟲獲取老樹畫畫微博幾乎全部內容。因為老樹畫畫發布的微博結構較為簡單,幾乎都是:一幅畫,配上一段文字,所以在忽略轉發內容後,獲取畫作、詩、發布時間、轉發數、評論數、點贊數等內容,共計3395條數據。再用PIL庫拼接圖片,並用Echarts進行數據可視化。
2、老樹畫畫
此前沒聽說過老樹畫畫(劉樹勇)的人,可以看看一席的視頻:全程笑點不斷,有很多值得思考的地方。演講最後也播放了一些作品,可作為初步了解。
【一席】老樹畫畫《做一個夢》
其人在幽默之外,給我的感覺就是有種難以描述的「江湖氣」,這是我以前在所謂大學老師身上,乃至其他人身上蠻少看見的。
二、圖片拼接
以前爬微信好友頭像時,就用過PIL拼接圖片,也在《爬取張佳瑋138w+知乎關注者:數據可視化》里放上爬取北美帝國大廈亮燈圖後,拼接製作的「ZJU 120」logo。
此次再度用PIL庫拼接圖片,當然前期需要篩選出好看的、格式和色調等相和諧的圖,再將圖片批量重命名成數字,完成後,幾張成果圖如下(文章開頭的圖亦然),還是蠻好看的:
不知道大家比較喜歡哪一張,存圖的一定記得點個贊或打個賞,鼓勵下哈。這裡挑選的圖主要是草木、蔬果的圖,也是老樹畫畫作品裡佔比不少的系列,另外幾個系列是什麼,留給大家自己去「探寶」了!
三、數據可視化
從微博主頁可以了解到,截止20170805中午11點,其關注數:1130,粉絲數:1492599,微博數:3467。其中第一條微博始於2011年。
因為獲取的3395條數據中,每條微博發布時間格式為:「Fri Feb 8 21:38:54 +800 2013」,需要先預處理,轉換成星期、月份、日期、時間、年份等,這裡直接用csv的「數據」-「分列」即可。
1、發布微博之年度情況
首先看看老樹畫畫每年發布微博的數量情況:(2011-2017年)
由於老樹畫畫第一條微博始於2011-07-25(最初的幾條微博是關於溫州動車追尾事故的,默哀三分鐘),所以2011年和2017年數據並非全年情況,暫且看2012-2016年發布數量,可見逐年遞減,2012年日均2.9條,2016年日均不到0.4條,而2011年日均更是高達3.6條。
那麼具體每日的發布情況怎麼樣呢?上過GitHub的人,可能會對個人主頁中的貢獻圖有印象,算是很好的展現全年數據的方式,不過此前沒畫過,網上搜了一圈也沒看到可快速上手的,最後皇天不負有心人,終於在知乎上找到了:ECharts 小例子:實現日曆圖,正好也是用Echarts繪製calendar heatmap,完美。之後就是將日期數據按要求處理成統一格式,最終成果圖如下:
不論是從顏色上,還是色塊佔比上,都可以直觀的看出,老樹畫畫發布微博數量和頻率呈現逐年遞減的趨勢。其中在所有日期里,單日發布數量最高的(即色塊顏色最深的一格)是:2012-10-19,共計24條(好吧上面色度條最大值20,小小bug了下,就懶得改了),到底發了什麼,此處同樣留個懸念。
2、發布微博之月份情況
接下來看看在這6年多里,每個月發布情況,9月份和12月份以340+條幾乎並列第一,月均56條,而3月份和4月份以低於255條居於末位,月均43條。側面反映了前三年每月發布數量還真不少,再後幾年個別月份只有個位數的情況下,月均依舊超過40條。
3、發布微博之星期情況
再看一周內情況,每日的差距似乎不算太大。不作過多說明了。
4、發布微博之24小時情況
再看24小時情況。其中凌晨4點、5點無數據,2點4條,3點1條,6點3條,睡覺不水手機,水手機不睡覺。嗯。
數量最高的:12點334條,18點317條,難道老樹畫畫喜歡在飯點吟詩作畫?結合《一席》演講里提到的一句詩:「眼前兩碗米飯,心中一粒飛鴻。」結合此處數據,可以算作另類的解釋了,又或許只是飯點前後掏出手機水會罷了。
5、評論、轉發與點贊情況
上回對張佳瑋138W+關注者數據進行處理時,最後並沒有處理贊同數、收藏數、感謝數。此次爬取老樹畫畫的微博內容,數值數據本就少,因此將評論數、轉發數和點贊數繪製成相應散點圖,結果如下:
從參與度來說,寫評論、轉發、點贊,三者的參與度應當依次降低,刷刷微博,刷刷朋友圈,看到不錯的內容,反手就是一個......贊,是很方便的,而去寫評論和回復相對麻煩些,當然不同人可能習慣不同。簡書亦然,閱讀量也許幾百幾千,轉化成喜歡和贊同就少了很多,再是評論和打賞就更加寥寥了。
說回上圖,評論數和轉發數似乎可以看成和點贊數呈正相關。其中,點贊數1w+的有2條,相應的轉發和評論數同樣不低,找到對應時間的微博,分別為:
談談人性,說說孤獨,罵罵傻逼,輕鬆破萬贊。
再看圖中縱坐標處附近,點贊數寥寥,但轉發數1w,評論數幾千,不可思議,找來一探究竟:
第一條:「一個泄露國家機密的人!」。
到圖庫里找出來,仔細瞅瞅!手動翻譯成簡體字:
「茂名市委書記羅蔭國貪污十六億被雙規,接受調查時談五點:『一、要說我是貪官,說明官場就是貪場,憑什麼專搞我?二、真叫我交代我能講三天三夜,把廣東官場翻個底朝天。三、中國不就是腐敗分子提拔腐敗分子,腐敗分子反腐敗嗎?四、像我這種級別的,誰不能供出百來個?五、誰不花錢當上小科長叫他大哥。』」
(碼完字,倒吸一口氣,如果這篇文章掛了,一定是因為這個吧......富強民主文明和諧,護體!)
第二條:「有時心情糟糕,真想死掉拉倒。折騰半天睡去,醒來不想死了。——《有時候》系列之五」
生生死死的大哉問,睡一覺,將什麼都拋諸腦後。
另外兩條高贊高轉發的微博:
「天色將晚,抱魚上床。世間破事,去他個娘。」
18禁的評論,不能腌臢了咱小媳婦、大姑娘的眼睛,快走開,快走開,看什麼看!
「【清明】煙雨十里春深,落花輕覆草痕。陌上青青柳色,心中念念故人。」
看時間,正是清明,看來觸動了不少人的感情。
四、打油詩
「老樹微博,三千詩與畫」,這句話是我當初爬完數據後分享到朋友圈的,老樹畫畫的「打油詩」,也是一大特色,微博底下幾乎也是清一色回復詩的,倒是蠻奇特的「景觀」。這裡對文本、自然語言的處理、情感分析等等都沒有涉及,後續可以繼續研究下,看看這些詩里正面情感和負面情感情況如何?此處僅貼上原始獲取的數據和詞云:
曾寫過詩,填過詞,倒沒怎麼看過打油詩,有了這3千多少詩,嘿嘿嘿,倒是可以試試怎麼把詞頻最高的一些詞語串起來,寫首什麼,歡迎大家在評論里創作。━(*`?′*)ノ亻!
五、小結
第一次用fiddler抓包移動端,發現比想像中簡單,網上安裝配置的文章很多,很簡單的幾步。移動端的爬取要比網頁電腦的容易的多,但畢竟是微博,傳說中反爬嚴格的社媒啊,在不清楚移動端情況下,直接上手爬,還是蠻怕被封ip和賬號的。幸而順利爬完。對於想獲取數據的人來說,完全可以爬移動端,此次和上回爬知乎差不多,都是訪問API,返回JSON數據,完全不用beautifulsoup,正則什麼繁瑣的提取信息,簡直愛死JSON數據了。
再是用Echarts繪製calender heatmap,也是第一次,技能get。
最後是文本數據的挖掘、情感分析可以繼續學習,社媒的數據處理和分析,沒什麼思路。
最後的最後,發張「舒服死了」的圖,23333:
第三方的方法:1.爬蟲2.API
難道樓主是要下載新浪微博的人發布的狀態信息,如果是這樣,可以有兩個方法,一個是用htmlunit包實現登錄微博,然後獲取頁面信息,我之前用這個,但是後來碰到一個js的問題,沒有能解決,就放棄了,第二個方法是用新浪的API來實現,我後來是用這個方法的,不過新浪的API確實不怎麼樣,能實現下載吧。@歐陽梟雄 謝邀
1、如何爬取新浪微博數據?請看我的這一篇文章:
Python 爬蟲如何機器登錄新浪微博並抓取內容??www.zhihu.com裡面有抓取微博內容的大體思路,如果你懂一些Python爬蟲的技術可以馬上著手操作一番。
我用微博數據寫了兩篇事件分析文章,歡迎關注我的公眾號:產品汪生存指南
如果你正好在做用戶行為分析論文,或許可以給你一些啟發。
另外,如果您需要針對某個(或某些)人定向爬取最新動態,比如想第一時間知道某個人今天發了什麼微博,在微博里給什麼人回復了什麼評論,通過什麼方式回復的等,最近我正好完成了一個這樣的項目,可以實現自動化跟蹤。
如果你也需要,歡迎關注。
https://github.com/SuperSaiyanSSS/SinaWeiboSpider使用方法很簡單直接pip install weibospider
推薦閱讀: