gephi mysql_使用Gephi分析论坛社交关系网络
本文用Python抓取QQ群論壇中的發貼、留言數據,以此構成社交關系數據,再進行數據處理,最后用Gephi繪制社交關系網絡圖。數據源選取的是QQ群論壇(一個收費的成長學習論壇,論壇沉淀了一年的數據)。
步驟:
1)分析人物關系,確認數據抓取方式
2)編寫Python程序抓取人物關系數據
3)數據清洗,匯總
4)數據導入Gephi,調整參數繪制
一、分析頁面,確定抓取構成人物關系的數據源
社交關系網絡的構成是節點和邊,人物就是節點,邊(連線)即是關系。這個論壇采用的是一人一個主題貼,蓋樓的方式記錄學習成長,其他人在主題貼下回復,回復即互動。
節點,就是論壇中的參與者(成長會成員)。回復構成連接,回復多即關系強(互動多,weight數值大)。
所以在抓到數據時,就是抓取發貼數量,回復人即可,即把頁面所有發表主題貼和回復貼的用戶名進行抓取即可,再進行數據匯總統計,就構成社交關系數據(source — 發貼人, target — 回復者, weight — 發貼人與回復者互動次數)
發貼與回復
二、Python爬蟲抓取數據
采用Scrapy框架編寫爬蟲抓取數據:
1)論壇登錄問題,用Cookie登錄比較簡單。參見之前的文章《Scrapy用Cookie實現模擬登錄》
2)注意,論壇中主題貼,他人主題回復,在回復下的回復(樓中樓)使用了不同要標簽樣式,抓取時不要遺漏。采用一個比較簡單的檢查方式,選取一個發貼比較少的用戶,各種回復都出現的,抓取數據后進行比對復查。
在反復檢查核對抓取一個用戶的數據后,發現登錄用戶名的數據會出現在每一頁中,也會抓取下來,核對源代碼發現,是因為論壇的每一頁下有一個發貼的地方。無法在程序抓取時排除,只能放到下面數據清洗時處理。
3)分頁抓到一個用戶所有數據
進行第一頁時,獲到當前用戶的頁數即可,循環抓取一個用戶所有頁的發貼、留言、回貼的用戶名。
4)抓取所有用戶
由于論壇用戶是順序編號,論壇是Restful架構風格,只要一個循環可以抓取所有用戶的社交信息。只不過進入頁面需要判斷這個頁面是不是有效頁面,因為可能id已費掉,沒有數據。
爬蟲數據保存用了CSV文件,剛開始是準備采用Excel分類匯總的進行統計,后來還是導入mysql數據庫匯總比較方便。一共抓取數據 36,603 條。
三、數據清理,構建數據源數據
數據清理包括:
1)數據匯總,匯總社交關系值weight
select aid as source,bid as target,count(bid) as weight from bbs.link group by aid,bid
2)手動清理頁面中抓到的無效數據
3)對論壇管理員的數據檢查,重命名(管理員沒有進行編號)
4)對異常數據檢查核對,發現有論壇中有人申請了重號,未對這部分數據一一校正,刪除數據38條
5)數據導出CSV格式,共計 9,587 條 ,三列 source ,target, weight
部分數據
四、使用Gephi繪制社交網絡關系圖
Gephi介紹:Gephi是一款開源基于JVM的復雜網格分析軟件,主要用于各種網絡和復雜系統,動態和分層圖的交互可視化工具。用于探索性數據分析,鏈接分析,社交網絡分析,生物網絡分析等。
1)導入數據
在Gephi的“數據資料” — “輸入電子表格”,進行數據導入。
注意導入數據后,要復制數據ID列 到 Label列,Label才會顯示到Gephi圖形的節點標簽上。
導入CSV數據
2)調整Gephi的參數,生成網絡關系圖
全圖
局部圖
2016年很快就過去了,這一年你記錄了哪些,有哪些進步,又連接了哪些人,歡迎在評論中留言分享。
總結
以上是生活随笔為你收集整理的gephi mysql_使用Gephi分析论坛社交关系网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 诺禾--实验篇之荧光定量 PCR(上)
- 下一篇: 第三章 windows程序设计 王艳平版