邵佩佩(湖北省武漢大學遙感信息工程學院,武漢 430072)
社交網(wǎng)絡數(shù)據(jù)挖掘技術淺談
邵佩佩
(湖北省武漢大學遙感信息工程學院,武漢 430072)
進入大數(shù)據(jù)時代,各類社交網(wǎng)站包涵大量的信息數(shù)據(jù),本次研究在開源的網(wǎng)絡爬蟲代碼的基礎上加以創(chuàng)新,研究出了一種新型比較高效的爬蟲算法。通過對社交網(wǎng)絡進行有目的的數(shù)據(jù)挖掘,并進行過濾提取所需信息,存儲進預先設定的數(shù)據(jù)庫。
大數(shù)據(jù);網(wǎng)絡爬蟲;數(shù)據(jù)挖掘;數(shù)據(jù)庫
在信息爆炸的時代,互聯(lián)網(wǎng)使我們可以得到海量數(shù)據(jù),但并不是這些信息中只有一部分為能為我們所用。如何在海量數(shù)據(jù)中獲取所需的信息,本次研究基于這個問題展開。在社交軟件中,我們知道每個ID對應的都有一系列的屬性信息,包括性別、年齡、出生地、所在地等等。首先是數(shù)據(jù)的獲取,參考各類已有的工具,使用網(wǎng)絡爬蟲作為主要數(shù)據(jù)遍歷的工具。其次,由于網(wǎng)站對IP設置了訪問次數(shù)的限制,還需解決如何獲取足夠多數(shù)據(jù)的問題,通過借鑒其他的案例,我們采取了線程控制的機制,來控制單位時間的訪問次數(shù)。接著是對數(shù)據(jù)的加工處理,并且通過編程的方式,使用程序?qū)o用信息剔除,存儲有用信息,讀入數(shù)據(jù)庫,構(gòu)建信息鏈。
本次研究在開源爬蟲代碼的基礎上進行創(chuàng)新,通過模擬登陸,并且結(jié)合實際網(wǎng)絡特性利用線程方法控制單位時間內(nèi)的訪問次數(shù),最后完成對數(shù)據(jù)的析取。
2.1 Python 模擬身份登陸
過程:首先利用加密的用戶名和密碼進行登陸,然后通過微博等社交網(wǎng)絡的服務器得到cookies(Cookies就是服務器暫時存放在你的電腦里的資料,好讓服務器用來辨認你的計算機)。
2.2 控制訪問次數(shù)
由于新浪微博等網(wǎng)站對訪問次數(shù)有限制,所以本次研究在單位時間內(nèi)控制訪問次數(shù):(1)構(gòu)造高級搜索對應的請求參數(shù)字符串。(2)發(fā)送請求并保存搜索結(jié)果。通過線程控制,程序等待一定時間。(3)根據(jù)設定的終止條件判定是否抓取完畢,否則循環(huán)進行步驟(1)。
2.3 進行數(shù)據(jù)分析與提取
通過網(wǎng)絡爬蟲抓取的為含有大量冗余無關數(shù)據(jù)的HTML文本數(shù)據(jù),本次研究采用基于內(nèi)核IE的網(wǎng)頁抓取算法剔除所獲數(shù)據(jù)中的冗余部分,最終保存相關數(shù)據(jù)到MySQL 數(shù)據(jù)庫中。
3.1面向內(nèi)容的初步過濾
爬蟲軟件只能針對開源網(wǎng)頁上的種子進行廣度遍歷,然而不可避免地會收集到重復的信息,如鏡像網(wǎng)頁等,這是可采取多種算法進行篩選重復信息,亦即網(wǎng)頁消重。
算法1:排除相同的URL:在開源的爬蟲代碼基礎上,分析不同網(wǎng)頁的URL,規(guī)則是相同的URL代表相同的網(wǎng)頁,此時需要去除重復的URL。本方法簡單易實現(xiàn),但沒有利用文本內(nèi)容信息,不能對轉(zhuǎn)載等大體內(nèi)容相近的網(wǎng)頁進行區(qū)分篩選。
算法2:基于聚類去重法[1]:該方法是將網(wǎng)頁的整體文本內(nèi)容視為多維向量,以7000個字符作為向量的一個基,文本中某組或某個漢字所出現(xiàn)的頻率就構(gòu)成了代表網(wǎng)頁的向量,通過計算向量的夾角確定是否是相同的網(wǎng)頁。
由于每個字符對整個文本的重要性是不一樣的,所以我們可以給不同字符賦予不同的權重,而所有字符的權重構(gòu)成了網(wǎng)頁文本的空間向量。類似于理論向量的計算過程,需要先計算兩個網(wǎng)頁文本空間向量的夾角,然后依據(jù)該夾角來評估兩個網(wǎng)頁的相似程度。當夾角小于某一個閾值時,就認為他們是同一類別[2]。
3.2 面向客戶的高級過濾
通過調(diào)用MySQL來存儲通過網(wǎng)絡爬蟲獲取到的社交網(wǎng)絡用戶的信息數(shù)據(jù)。MySQL由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,所以選擇了MySQL作為數(shù)據(jù)庫,將數(shù)據(jù)保存在各種不同的表格中,這提高了存儲速度。調(diào)用MySQL所使用的SQL語言是最常用標準化語言。
我們通過Twisted來連接mysql。Twisted 是一個異步網(wǎng)絡框架, 意味著標準數(shù)據(jù)庫模塊無法直接使用。同時,對于異步框架而言,這些延遲是無法接受的。因此, Twisted 提供了 twisted.enterprise. adbapi, 遵循DB-API 2.0協(xié)議的一個異步封裝。從而將指定數(shù)據(jù)存儲進數(shù)據(jù)庫中。
[1]李毅.基于向量機的數(shù)據(jù)流聚類學習方法研究[Z],2013.
[2]王睿.面向垂直搜索引擎的網(wǎng)頁抓取器的設計和實現(xiàn)[D].中國海洋大學計算機技術,2009(11).
[3]Matthew A.Russell.Mining the Social Web[M].機械工業(yè)出版社,2012.