李世杰 高雅蓉
摘要:社交網(wǎng)絡(luò)平臺(tái)擁有海量的用戶數(shù)據(jù),為了更好地實(shí)現(xiàn)這些數(shù)據(jù)的價(jià)值,設(shè)計(jì)了一個(gè)基于Java的網(wǎng)絡(luò)爬蟲系統(tǒng),用來獲取和分析某大型社交網(wǎng)絡(luò)平臺(tái)上的用戶數(shù)據(jù)。該系統(tǒng)通過特定用戶的URL來獲取基本信息,不斷裂變獲取相關(guān)用戶的數(shù)據(jù)信息。同時(shí)將該用戶信息以記錄的形式存儲(chǔ)在用戶明細(xì)表中,利用系統(tǒng)對記錄信息的分析,得出不同類別的圖表分析圖,并直觀地進(jìn)行展示。該系統(tǒng)具有針對性強(qiáng)、數(shù)據(jù)采集速度快和分析結(jié)果直觀等優(yōu)點(diǎn),為社會(huì)關(guān)系和輿情分析等研究提供了新方法。
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;用戶數(shù)據(jù);Java;裂變
中圖分類號(hào):TP391文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2020)01-68-4
0引言
近年來,社交網(wǎng)絡(luò)平臺(tái)的發(fā)展極為迅速,目前已經(jīng)出現(xiàn)多個(gè)用戶突破1億的平臺(tái),擁有非常龐大的用戶數(shù)據(jù),所以有效獲取和分析這些數(shù)據(jù)對于研究人類社會(huì)和經(jīng)濟(jì)的潛在規(guī)律至關(guān)重要。傳統(tǒng)的數(shù)據(jù)收集是通過搜索引擎來進(jìn)行的,但是對具體平臺(tái)進(jìn)行特定數(shù)據(jù)抓取時(shí),通過搜索引擎就無法有效完成,需要設(shè)計(jì)專門的網(wǎng)絡(luò)爬蟲系統(tǒng)來獲取特定數(shù)據(jù)。Python語言常被用于爬蟲程序編寫,但相比Java而言,Python的執(zhí)行效率低,而且Java語言對多線程的支持更加完善[1]。針對某大型社交網(wǎng)絡(luò)平臺(tái)設(shè)計(jì)了基于Java語言的網(wǎng)絡(luò)爬蟲系統(tǒng),爬取該平臺(tái)用戶的相關(guān)信息。同時(shí)為了更好地進(jìn)行數(shù)據(jù)分析,系統(tǒng)可以從多角度對所獲得的用戶數(shù)據(jù)進(jìn)行統(tǒng)計(jì),并以直觀的圖表形式呈現(xiàn)。
1網(wǎng)絡(luò)爬蟲技術(shù)
網(wǎng)絡(luò)爬蟲技術(shù)是數(shù)據(jù)信息采集的常用手段,由于其自動(dòng)化、拓展性強(qiáng)和開發(fā)相對簡單等優(yōu)勢,被普遍應(yīng)用于各行各業(yè)的數(shù)據(jù)模型分析[2]。通過網(wǎng)頁的鏈接地址,獲取其中傳遞的數(shù)據(jù)信息,自動(dòng)檢索頁面數(shù)據(jù)模型,根據(jù)定義好的字段篩選數(shù)據(jù)獲得數(shù)據(jù)資源。網(wǎng)絡(luò)爬蟲將每一條鏈接存儲(chǔ)在隊(duì)列中,一個(gè)個(gè)調(diào)用,當(dāng)鏈接被使用后自動(dòng)廢棄,同時(shí)將每條鏈接上爬取的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,供用戶使用。
通過算法來優(yōu)化數(shù)據(jù)爬取的方式,如廣度優(yōu)先搜索策略,以最短的路徑爬取深層次的資源數(shù)據(jù),減少數(shù)據(jù)搜集成本[3]。具體過程是首先確定少部分URL作為子結(jié)點(diǎn),存儲(chǔ)在待抓取的URL隊(duì)列中,然后到對應(yīng)的URL站點(diǎn)下載相應(yīng)的頁面數(shù)據(jù)信息,當(dāng)這些URL被抓取成功后,把它們放入已經(jīng)抓取的URL隊(duì)列中,然后再抽出新的鏈接地址,進(jìn)行頁面數(shù)據(jù)挖掘。流程如圖1所示。
2 WebMagic
WebMagic是基于Java的一個(gè)爬蟲框架,核心部分主要是爬蟲的具體邏輯實(shí)現(xiàn),除此以外還有一部分拓展功能,幫助用戶實(shí)現(xiàn)個(gè)性化需求[4]。WebMagicp爬蟲框架主要有四大組件,由Spider進(jìn)行串聯(lián),網(wǎng)絡(luò)爬蟲中的下載、處理和管理等功能都是由四大組件來負(fù)責(zé),彼此之間交叉聯(lián)系,整體功能設(shè)計(jì)更趨向流程化的規(guī)范[5]。而Spider可以被認(rèn)為是該框架的一個(gè)大容器,保存最核心的模塊。
3反反爬蟲機(jī)制
為了防止用戶數(shù)據(jù)被用于非法用途,許多網(wǎng)站都采取反爬機(jī)制,阻止別人批量獲取網(wǎng)站信息,并且反爬機(jī)制也在不斷完善。為了能夠成功獲取平臺(tái)上的用戶數(shù)據(jù),提出以下幾種反反爬策略:
①動(dòng)態(tài)更改user-agent,通過用戶代理讓服務(wù)器認(rèn)為每次請求是來自不同的瀏覽器。
②通過獲取一定數(shù)量的代理IP地址,達(dá)到每次請求連接服務(wù)器都是來自不同的IP地址的目的,這樣可以迷惑服務(wù)器,讓服務(wù)器無法確定具體的訪問IP[6]。
③對系統(tǒng)的數(shù)據(jù)爬取頻率過快的話,容易造成賬戶被封禁,所以要對爬取速率進(jìn)行控制[7]。
④建立并維護(hù)cookie池,所以更保險(xiǎn)的方法是多獲取幾個(gè)cookie,每次請求隨機(jī)設(shè)定一個(gè)cookie[8]。
4系統(tǒng)實(shí)現(xiàn)
本文所設(shè)計(jì)的爬蟲系統(tǒng)是針對社交網(wǎng)絡(luò)平臺(tái)的用戶數(shù)據(jù),目的是對用戶個(gè)人數(shù)據(jù)的獲取與分析。實(shí)現(xiàn)過程是以一個(gè)用戶為基準(zhǔn),然后不斷進(jìn)行裂變,再對所爬取數(shù)據(jù)統(tǒng)計(jì)以直觀圖的形式呈現(xiàn),進(jìn)而得到有效合理的分析,系統(tǒng)框架流程圖如圖2所示。
從圖3可以看出,系統(tǒng)可以有效地爬取社交網(wǎng)絡(luò)平臺(tái)用戶的各項(xiàng)數(shù)據(jù),包括性別、地域、從事行業(yè)以及畢業(yè)學(xué)校等信息,而且信息都清楚地進(jìn)行分類展示,為下一步數(shù)據(jù)分析提供了極大的便利。
4.4對用戶數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析
由于獲取到的數(shù)據(jù)龐大且復(fù)雜,為了更好地進(jìn)行數(shù)據(jù)分析,系統(tǒng)可以從多角度對所獲得的用戶數(shù)據(jù)進(jìn)行統(tǒng)計(jì),比如男女比例、地域分布和從事的行業(yè)等,并以直觀的圖表形式呈現(xiàn),以性別為例,如圖4所示。
通過數(shù)據(jù)結(jié)果可以看出,目前該社交網(wǎng)絡(luò)平臺(tái)的大部分用戶在北上兩地,男性居多,行業(yè)都是目前主流的行當(dāng),例如互聯(lián)網(wǎng)、金融及計(jì)算機(jī)等,同時(shí)人群的普遍學(xué)歷較高。這些數(shù)據(jù)可以作為該社交網(wǎng)絡(luò)平臺(tái)發(fā)布廣告的一個(gè)側(cè)重點(diǎn),發(fā)布符合年輕化、學(xué)歷高并且處于熱門的一些廣告內(nèi)容,同時(shí)一些大數(shù)據(jù)分析公司可以借此獲取更多的數(shù)據(jù),進(jìn)而分析當(dāng)前年輕人的喜好,為用戶提供更精準(zhǔn)和優(yōu)質(zhì)的服務(wù)。
5結(jié)束語
本文研究網(wǎng)絡(luò)爬蟲的廣度優(yōu)先搜索策略,通過一個(gè)用戶的關(guān)注信息來裂變,不斷進(jìn)行新用戶的數(shù)據(jù)信息挖掘,并利用Java語言實(shí)現(xiàn)對社交網(wǎng)絡(luò)平臺(tái)用戶數(shù)據(jù)的獲取和分析。通過獲取到的該平臺(tái)用戶信息,包括男女比例、地域分布以及學(xué)歷程度等,不僅可以作為社交網(wǎng)絡(luò)平臺(tái)對其用戶精準(zhǔn)定位,提供更優(yōu)質(zhì)服務(wù),同時(shí)可以為一些大數(shù)據(jù)分析公司服務(wù),為輿情分析和促進(jìn)社會(huì)關(guān)系等研究提供便利。
參考文獻(xiàn)
[1]邵曉文.多線程并發(fā)網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2019(1):97-100.
[2]蔡創(chuàng).計(jì)算機(jī)軟件開發(fā)中JAVA編程語言的分析和思考[J].信息技術(shù)與信息化,2017(12):80-81.
[3] HERNANDEZI, RIVERO CR, RUIZD, et al. AnArchitecture for Efficient Web Crawling[J].Lecture Notes in Business Information Processing,2012: 228-234.
[4] RAFAEL P L,PEDRO B V,OTTO C M B.A Generalized Bloom Filter to Secure Distributed Network Applications[J]. Computer Networks,2011, 55(8):1804-1819.
[5] KAUSAR M A,DHAKA V S,SINGH S K.Web Crawler:A Review[J].International Journal of Computer Applications, 2013,63(2):31-36.
[6]羅咪.基于Python的新浪微博用戶數(shù)據(jù)獲取技術(shù)[J].電子世界,2018(5):138-139.
[7] FAN Y.Design and Implementation of Distributed Crawler System Based on Scrapy[J].Journal of Hubei University for Nationalities,2017:78-85.
[8]董博,翀李,劉學(xué)敏,等.基于爬蟲的數(shù)據(jù)監(jiān)控系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(10):53-60.