• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于動(dòng)態(tài)網(wǎng)頁(yè)解析的微博數(shù)據(jù)抓取方法*

      2015-03-14 12:32:27鐘明翔唐晉韜謝松縣
      艦船電子工程 2015年10期
      關(guān)鍵詞:爬蟲(chóng)新浪網(wǎng)頁(yè)

      鐘明翔 唐晉韜 謝松縣 王 挺

      (國(guó)防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院 長(zhǎng)沙 410073)

      ?

      一種基于動(dòng)態(tài)網(wǎng)頁(yè)解析的微博數(shù)據(jù)抓取方法*

      鐘明翔 唐晉韜 謝松縣 王 挺

      (國(guó)防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院 長(zhǎng)沙 410073)

      微博是一種新型信息傳播媒介,產(chǎn)生的海量數(shù)據(jù)吸引研究人員關(guān)注并開(kāi)展相關(guān)研究。微博數(shù)據(jù)獲取是后續(xù)分析研究的基礎(chǔ)和起點(diǎn)。以新浪微博平臺(tái)為研究對(duì)象,提出了基于動(dòng)態(tài)網(wǎng)頁(yè)解析技術(shù)的微博數(shù)據(jù)多線程抓取方法。方法利用瀏覽器內(nèi)核解析微博頁(yè)面動(dòng)態(tài)數(shù)據(jù),通過(guò)模擬登陸,依據(jù)社交網(wǎng)站網(wǎng)頁(yè)鏈接特點(diǎn)確定頁(yè)面爬取策略,使用頁(yè)面解析技術(shù)定制頁(yè)面數(shù)據(jù)抽取模板,實(shí)現(xiàn)以用戶為中心的微博數(shù)據(jù)獲取。抓取結(jié)果表明,方法能對(duì)微博用戶數(shù)據(jù)進(jìn)行全面高效抓取,為后續(xù)數(shù)據(jù)分析和處理提供數(shù)據(jù)支持。

      新浪微博; 數(shù)據(jù)挖掘; 動(dòng)態(tài)網(wǎng)頁(yè); 爬蟲(chóng)

      Class Number

      1 引言

      近年來(lái),社交媒體在互聯(lián)網(wǎng)上迅速發(fā)展和普及。在線社交網(wǎng)站、博客、維基、微博等社交網(wǎng)絡(luò)應(yīng)用在普通大眾中不斷普及和深入。微博以其平臺(tái)的開(kāi)放性、內(nèi)容發(fā)布的低門(mén)檻特性發(fā)展為重要的社會(huì)化媒體。Twitter自2006年創(chuàng)建以來(lái),用戶數(shù)量一直保持高速增長(zhǎng)勢(shì)頭。2009年用戶增長(zhǎng)率高達(dá)2565%,是社交網(wǎng)站Facebook和LinkedIn用戶增長(zhǎng)率總和的10倍[1]。新浪自2009年8月推出微博產(chǎn)品以來(lái),迅速成長(zhǎng)為中國(guó)微博平臺(tái)代表。截止2014年底,微博用戶數(shù)量超5.3億,月活躍用戶數(shù)量達(dá)到1.76億,目前是中國(guó)最具影響力和關(guān)注度的微博平臺(tái)。

      網(wǎng)民通過(guò)微博平臺(tái)發(fā)布和獲取信息、表達(dá)自我,形成社會(huì)輿論。以信息傳播為載體維系網(wǎng)絡(luò)社會(huì)關(guān)系。微博已經(jīng)逐漸對(duì)社會(huì)發(fā)展和國(guó)家安全產(chǎn)生深遠(yuǎn)影響。以Facebook、Twitter為代表的社交網(wǎng)站,已經(jīng)多次證明它們?cè)谝恍┥鐣?huì)事件中扮演著舉足輕重的角色。利用微博數(shù)據(jù)進(jìn)行輿情分析和潛在客戶發(fā)掘,使微博數(shù)據(jù)挖掘具有重大的社會(huì)意義和巨大商業(yè)價(jià)值。

      在國(guó)內(nèi),大量研究人員針對(duì)微博數(shù)據(jù)開(kāi)展相關(guān)研究。HAN Ruixia[2]介紹了微博平臺(tái)的基本概念和特點(diǎn)。新浪微博官方提供技術(shù)支持的SDK,出于商業(yè)利益和網(wǎng)絡(luò)資源保護(hù)考慮,對(duì)普通開(kāi)發(fā)者調(diào)用API獲取數(shù)據(jù)進(jìn)行了限制。也未對(duì)網(wǎng)絡(luò)爬蟲(chóng)和搜索引擎提供靜態(tài)文件。因此微博數(shù)據(jù)的全面高效獲取成為制約微博研究的一個(gè)瓶頸。目前微博數(shù)據(jù)獲取方法可分為四種[3]: 1) 基于微博開(kāi)放平臺(tái)的數(shù)據(jù)獲取技術(shù),即利用微博平臺(tái)提供的API。 2) 基于網(wǎng)絡(luò)爬蟲(chóng)的數(shù)據(jù)獲取技術(shù)。 3) 基于數(shù)據(jù)源鏡像的數(shù)據(jù)獲取技術(shù)。 4) 基于網(wǎng)絡(luò)數(shù)據(jù)流的數(shù)據(jù)獲取技術(shù)。基于鏡像資源的數(shù)據(jù)獲取往往不是免費(fèi)的,且獲取需要一定的權(quán)限。基于網(wǎng)絡(luò)數(shù)據(jù)流的獲取需要硬件支持來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境下用戶數(shù)據(jù)的捕獲。通過(guò)網(wǎng)絡(luò)數(shù)據(jù)流的解析和重構(gòu)來(lái)獲取微博數(shù)據(jù),需要比較復(fù)雜的技術(shù)。因此對(duì)于普通的開(kāi)發(fā)和研究人員而言,針對(duì)新浪微博數(shù)據(jù)的獲取方式,主要有以下兩種主要思路及做法: 1) 利用微博平臺(tái)提供的SDK調(diào)用API獲取數(shù)據(jù); 2) 利用網(wǎng)絡(luò)爬蟲(chóng)抓取網(wǎng)頁(yè)內(nèi)容,根據(jù)規(guī)則提取信息,或者二者組合應(yīng)用。陳舜華等[4]提出了合理控制新浪微博API調(diào)用頻次的分布式抓取技術(shù)。周立柱等[5]提出了利用聚焦爬蟲(chóng)抓取網(wǎng)頁(yè)內(nèi)容,并按規(guī)則提取有效信息的思路,但未涉及登陸模式,難以支持微博數(shù)據(jù)的完整獲取。廉捷等[6]提出了結(jié)合新浪微博API和網(wǎng)絡(luò)爬蟲(chóng)與網(wǎng)頁(yè)解析,實(shí)現(xiàn)微博數(shù)據(jù)的高效獲取方案。孫青云等[7]提出了基于模擬登陸,使用傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng),從下載的網(wǎng)頁(yè)中抽取微博和用戶信息數(shù)據(jù)的方案。但沒(méi)有涉及網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)的獲取和解析,不能完整獲取用戶評(píng)論和轉(zhuǎn)發(fā)等重要信息。

      通過(guò)對(duì)不同微博數(shù)據(jù)抓取方式進(jìn)行分析,本文選擇基于網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)解析的爬蟲(chóng)方案,并實(shí)現(xiàn)了一個(gè)以登錄用戶相關(guān)的微博數(shù)據(jù)抓取系統(tǒng)。

      2 現(xiàn)有微博獲取方式分析

      綜合分析目前兩種獲取微博數(shù)據(jù)的方案: 1) 通過(guò)API調(diào)用能簡(jiǎn)潔高效獲取便于分析的結(jié)構(gòu)化數(shù)據(jù),但在調(diào)用頻次和返回結(jié)果最大數(shù)量有諸多限制。 2) 使用網(wǎng)絡(luò)爬蟲(chóng)方案比較靈活,可基于模擬登陸和網(wǎng)頁(yè)數(shù)據(jù)解析獲取相關(guān)數(shù)據(jù),但實(shí)現(xiàn)難度較大,且無(wú)法獲取結(jié)構(gòu)化的微博數(shù)據(jù)。

      2.1 新浪微博API

      微博開(kāi)放平臺(tái)(Weibo Open Platform)是利用微博平臺(tái)的信息傳播能力接入第三方應(yīng)用,向用戶提供應(yīng)用和服務(wù)的開(kāi)放平臺(tái)。目前新浪微博開(kāi)放平臺(tái)提供了微博接口、關(guān)系接口、用戶接口、評(píng)論接口、粉絲服務(wù)接口等26類API接口[8]。幾乎包括了微博的所有功能。但對(duì)于需定制的數(shù)據(jù)請(qǐng)求服務(wù),則必須在API基礎(chǔ)上進(jìn)行擴(kuò)展開(kāi)發(fā)。開(kāi)發(fā)者要調(diào)用API首先需通過(guò)OAUTH2.0認(rèn)證授權(quán)?,F(xiàn)在新浪微博全面采用OAUTH2.0認(rèn)證授權(quán)。在OAUTH2.0授權(quán)下通過(guò)調(diào)用API接口請(qǐng)求獲取JSON格式數(shù)據(jù)文件。通過(guò)OAUTH2.0調(diào)用API接口有兩種方式: 1) 直接使用參數(shù)傳遞。如參數(shù)名為access_token,調(diào)用方式為https://api.weibo.com/2/statuses/public_timeline.json? access_token=abcd。其中json?表示返回?cái)?shù)據(jù)格式為JSON。JSON是一種輕量級(jí)數(shù)據(jù)交換格式。JSON文件結(jié)構(gòu)簡(jiǎn)單,不使用標(biāo)記內(nèi)容屬性的說(shuō)明性標(biāo)簽。如:{“ID”:“1472368912”:“name”:“Jake”}。因此JSON文件不僅返回文件更小,而且計(jì)算機(jī)易于分析處理。 2) 在header里傳遞。如Access Token的值為abcd,調(diào)用形式為在header里添加Authorization:OAuth2 abcd。其他的接口參數(shù)正常傳遞即可。

      出于商業(yè)利益和服務(wù)器安全考慮,新浪微博API從用戶維度和IP維度,對(duì)不同授權(quán)級(jí)別開(kāi)發(fā)者進(jìn)行了訪問(wèn)頻次限制。為防止用戶調(diào)用API進(jìn)行非法操作,新浪微博開(kāi)放平臺(tái)針對(duì)API的返回?cái)?shù)據(jù)量和調(diào)用次數(shù)也進(jìn)行了嚴(yán)格限制。且微博API技術(shù)原理是HTTP輪詢(POLLING),非即時(shí)推送(realtime push)協(xié)議。調(diào)用API不能達(dá)到及時(shí)獲取最新消息的效果。

      2.2 網(wǎng)絡(luò)爬蟲(chóng)

      網(wǎng)絡(luò)爬蟲(chóng)(又稱網(wǎng)頁(yè)蜘蛛,網(wǎng)絡(luò)機(jī)器人等),是一種按照設(shè)定規(guī)則自動(dòng)抓取萬(wàn)維網(wǎng)信息的程序或腳本。初期的通用爬蟲(chóng)是對(duì)萬(wàn)維網(wǎng)的所有網(wǎng)頁(yè)進(jìn)行無(wú)差別抓取。其目標(biāo)是盡可能大的網(wǎng)絡(luò)覆蓋率。隨著萬(wàn)維網(wǎng)數(shù)據(jù)形式不斷豐富和網(wǎng)絡(luò)技術(shù)的發(fā)展,為根據(jù)既定抓取目標(biāo)有選擇的獲取信息,面向垂直搜索的聚焦爬蟲(chóng)應(yīng)運(yùn)而生[9]。垂直搜索的聚焦爬蟲(chóng)目的是精確地抽取網(wǎng)頁(yè)內(nèi)容,并保存為結(jié)構(gòu)化數(shù)據(jù)。其重點(diǎn)和難點(diǎn)在于定制高效的網(wǎng)頁(yè)內(nèi)容分析和抽取。聚焦爬蟲(chóng)從當(dāng)前抓取頁(yè)面數(shù)據(jù)中進(jìn)行分析和過(guò)濾,根據(jù)一定策略選擇URL放入后續(xù)抓取隊(duì)列,直到滿足停止條件則終止。因此可以通過(guò)合理設(shè)置URL選擇策略和頁(yè)面數(shù)據(jù)抽取策略,使用網(wǎng)絡(luò)爬蟲(chóng)來(lái)獲取相關(guān)數(shù)據(jù)。

      Ajax是一種創(chuàng)建快速動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)??稍诓恢匦录虞d整個(gè)網(wǎng)頁(yè)情況下,通過(guò)后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,實(shí)現(xiàn)網(wǎng)頁(yè)某個(gè)部分的異步更新。為減少網(wǎng)絡(luò)傳輸流量,提高用戶體驗(yàn)度,微博網(wǎng)站對(duì)Ajax技術(shù)應(yīng)用越來(lái)越多。目前新浪微博的評(píng)論和轉(zhuǎn)發(fā)信息都是由JavaScript動(dòng)態(tài)生成。由于Ajax頁(yè)面是由客戶端瀏覽器執(zhí)行腳本代碼動(dòng)態(tài)生成。因此網(wǎng)絡(luò)爬蟲(chóng)僅能抓取web服務(wù)器返回的html文件,不能抓取JavaScript動(dòng)態(tài)生成的信息。同時(shí)由于新浪微博的用戶隱私保護(hù)策略,只有登錄的用戶才能對(duì)評(píng)論、轉(zhuǎn)發(fā)等頁(yè)面信息進(jìn)行瀏覽。因此,使用網(wǎng)絡(luò)爬蟲(chóng)必須解決網(wǎng)頁(yè)客戶端動(dòng)態(tài)數(shù)據(jù)獲取和模擬登陸兩個(gè)問(wèn)題。

      3 基于網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)獲取的爬蟲(chóng)方案實(shí)現(xiàn)

      3.1 爬蟲(chóng)框架下動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù)獲取技術(shù)

      在網(wǎng)絡(luò)爬蟲(chóng)框架中,頁(yè)面下載模塊負(fù)責(zé)網(wǎng)頁(yè)數(shù)據(jù)的下載獲取。本文針對(duì)傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)無(wú)法爬取Ajax頁(yè)面內(nèi)容數(shù)據(jù)的問(wèn)題,對(duì)網(wǎng)絡(luò)爬蟲(chóng)頁(yè)面下載模塊進(jìn)行改造。傳統(tǒng)網(wǎng)絡(luò)爬蟲(chóng)頁(yè)面下載模塊直接使用http協(xié)議,接受并分析服務(wù)器響應(yīng)來(lái)實(shí)現(xiàn)頁(yè)面下載。然而針對(duì)社交網(wǎng)站頁(yè)面javascript動(dòng)態(tài)加載的網(wǎng)頁(yè)數(shù)據(jù),使用http協(xié)議不能取到完整頁(yè)面內(nèi)容。目前的主要有兩種思路: 1) 分析javascript邏輯,通過(guò)爬蟲(chóng)在網(wǎng)頁(yè)中提取關(guān)鍵數(shù)據(jù)去構(gòu)造Ajax請(qǐng)求,最后從服務(wù)器響應(yīng)中獲取完整數(shù)據(jù)。但是由于javascript代碼使用和編寫(xiě)不規(guī)范導(dǎo)致效果不很理想。 2) 在爬蟲(chóng)頁(yè)面下載模塊,利用Web自動(dòng)測(cè)試工具模擬瀏覽器提取Ajax頁(yè)面內(nèi)容。直接獲取加載完整的頁(yè)面數(shù)據(jù)。目前針對(duì)這種方法已經(jīng)有比較成熟的方案,能在保證速度的情況下有較好的穩(wěn)定性。Selenium是一個(gè)開(kāi)源Web功能測(cè)試工具[10]。通過(guò)javascript管理測(cè)試過(guò)程。其針對(duì)Java提供API可以和瀏覽器內(nèi)核進(jìn)行交互,其核心是webdriver,可以模擬用戶真實(shí)操作,包括瀏覽網(wǎng)頁(yè)頁(yè)面,觸發(fā)鼠標(biāo)事件、點(diǎn)擊鏈接、提交表單、輸入文字等用戶行為。通過(guò)對(duì)網(wǎng)絡(luò)爬蟲(chóng)抓取框架的頁(yè)面下載模塊進(jìn)行改寫(xiě),控制瀏覽器內(nèi)核與微博Web服務(wù)器交互,持續(xù)獲取完整頁(yè)面動(dòng)態(tài)數(shù)據(jù)。即可實(shí)現(xiàn)模擬登陸以及獲取完整的Ajax頁(yè)面數(shù)據(jù)。爬蟲(chóng)系統(tǒng)框架如圖1所示。其中爬蟲(chóng)框架模塊劃分不是本文重點(diǎn),在此不展開(kāi)闡述,詳細(xì)細(xì)節(jié)請(qǐng)參考相關(guān)引用文獻(xiàn)。

      圖1 網(wǎng)絡(luò)爬蟲(chóng)框架

      3.2 模擬登陸

      使用爬蟲(chóng)對(duì)微博網(wǎng)頁(yè)進(jìn)行爬取之前,首先需要進(jìn)行模擬登錄。模擬登陸通過(guò)Java程序模擬瀏覽器行為實(shí)現(xiàn)登陸過(guò)程。模擬登陸程序通過(guò)webdriver打開(kāi)登陸頁(yè)面。使用findElement方法進(jìn)行頁(yè)面元素查找和定位。在頁(yè)面元素內(nèi)通過(guò)讀取配置文件模擬輸入用戶名、密碼,提交按鈕完成模擬登陸流程。模擬登陸基本實(shí)現(xiàn)過(guò)程如下:

      1) 利用webdriver打開(kāi)登陸頁(yè)面。

      2) 使用findElement方法在登陸頁(yè)面內(nèi)查找賬號(hào)和密碼輸入框元素,通過(guò)sendkey方法對(duì)該元素進(jìn)行傳值。如密碼輸入框元素查找方式為:findElement(By.xpath(("http://input[@node-type='password'],之后通過(guò)sendKeys(pswd)即可完成密碼輸入。

      3) 通過(guò)查找和點(diǎn)擊提交按鈕完成登陸流程。

      程序模擬登陸成功后,通過(guò)調(diào)用瀏覽器內(nèi)核向服務(wù)器發(fā)送數(shù)據(jù)請(qǐng)求來(lái)實(shí)現(xiàn)微博網(wǎng)頁(yè)的獲取。通過(guò)客戶端保持與服務(wù)器的session會(huì)話即可繼續(xù)訪問(wèn)微博的其它數(shù)據(jù)資源。

      3.3 針對(duì)社交網(wǎng)站網(wǎng)頁(yè)特征的抓取

      從網(wǎng)絡(luò)數(shù)據(jù)的拓?fù)涮卣魃现v,社交網(wǎng)站數(shù)據(jù)屬性區(qū)別于一般的普通網(wǎng)站。社交網(wǎng)站網(wǎng)絡(luò)數(shù)據(jù)分為兩大類[11]:用戶信息數(shù)據(jù)和微博信息數(shù)據(jù)。用戶信息數(shù)據(jù)主要字段包括:用戶UID、昵稱、所在城市、微博數(shù)、粉絲數(shù)、關(guān)注數(shù)、注冊(cè)時(shí)間、用戶認(rèn)證類型等。微博信息數(shù)據(jù)主要字段包括:作者信息、微博ID、發(fā)布時(shí)間、內(nèi)容、評(píng)論數(shù)、轉(zhuǎn)發(fā)數(shù)等。社交網(wǎng)站數(shù)據(jù)存在兩個(gè)維度的網(wǎng)絡(luò):第一個(gè)是用戶關(guān)系網(wǎng)絡(luò)。其節(jié)點(diǎn)是用戶,邊是用戶之間的關(guān)注關(guān)系。第二個(gè)是信息傳播網(wǎng)絡(luò)。其節(jié)點(diǎn)是用戶,邊是針對(duì)同一主題用戶之間的轉(zhuǎn)發(fā)評(píng)論關(guān)系。

      面對(duì)海量龐雜的微博網(wǎng)站數(shù)據(jù),必須確定合適的頁(yè)面抓取策略,才能實(shí)現(xiàn)對(duì)特定微博所有數(shù)據(jù)進(jìn)行完整獲取。本文針對(duì)社交網(wǎng)站數(shù)據(jù)的屬性特征使用如下頁(yè)面抓取策略:

      1) 以微博用戶首頁(yè)設(shè)為初始頁(yè)面,作為爬蟲(chóng)的入口。通過(guò)爬蟲(chóng)頁(yè)面下載模塊進(jìn)行動(dòng)態(tài)頁(yè)面數(shù)據(jù)獲取,從中抽取出微博用戶發(fā)布的所有微博鏈接。

      2) 將抽取出的用戶微博鏈接放入待抽取隊(duì)列。

      3) 從每條微博獨(dú)立頁(yè)面中抓取微博數(shù)據(jù)信息(作者信息、微博ID、源微博ID、發(fā)布時(shí)間、內(nèi)容、評(píng)論數(shù)、轉(zhuǎn)發(fā)數(shù)、點(diǎn)贊數(shù))。

      4) 從微博評(píng)論頁(yè)面中通過(guò)模擬瀏覽器行為進(jìn)行點(diǎn)擊和翻頁(yè),抓取評(píng)論信息(評(píng)論內(nèi)容、評(píng)論時(shí)間、評(píng)論作者ID、評(píng)論作者名稱、評(píng)論作者微博主頁(yè))。

      5) 從微博轉(zhuǎn)發(fā)頁(yè)面中通過(guò)模擬瀏覽器行為進(jìn)行點(diǎn)擊和翻頁(yè),抓取轉(zhuǎn)發(fā)數(shù)據(jù)(轉(zhuǎn)發(fā)ID、轉(zhuǎn)發(fā)源ID、轉(zhuǎn)發(fā)時(shí)間)。

      6) 將每一條轉(zhuǎn)發(fā)信息作為一條微博,從中抽取出鏈接放入待抽取隊(duì)列。

      然后重復(fù)步驟3)至6),由此即可以獲取特定微博用戶發(fā)布微博的完整相關(guān)信息數(shù)據(jù)。程序通過(guò)設(shè)置最大轉(zhuǎn)發(fā)層次數(shù),來(lái)控制爬蟲(chóng)的抓取深度。程序抓取過(guò)程如圖2所示。

      圖2 網(wǎng)頁(yè)數(shù)據(jù)爬取策略

      3.4 頁(yè)面解析技術(shù)

      爬蟲(chóng)頁(yè)面下載模塊通過(guò)調(diào)用瀏覽器內(nèi)核,獲取微博頁(yè)面完整的HTML格式文件。經(jīng)過(guò)分析新浪微博頁(yè)面編碼,發(fā)現(xiàn)該平臺(tái)內(nèi)相同頁(yè)面類型的編碼規(guī)則一樣。因此可以針對(duì)新浪微博頁(yè)面編碼規(guī)則,深度定制微博頁(yè)面信息解析抽取模板,即可實(shí)現(xiàn)同類型微博頁(yè)面數(shù)據(jù)的解析抽取。通過(guò)將不標(biāo)準(zhǔn)的HTML語(yǔ)言轉(zhuǎn)換為DOM數(shù)結(jié)構(gòu),利用xpath和正則表達(dá)式等頁(yè)面解析技術(shù),可實(shí)現(xiàn)微博頁(yè)面數(shù)據(jù)的高效精確獲取。xpath使用路徑表達(dá)式對(duì)HTML頁(yè)面文件節(jié)點(diǎn)元素進(jìn)行定位選取。正則表達(dá)式通過(guò)字符串描述、匹配符合規(guī)則的字符串。使用正則表達(dá)式可摘取字符串中需要的指定內(nèi)容。把二者結(jié)合起來(lái),通過(guò)鏈?zhǔn)匠槿】梢詼?zhǔn)確高效地解析出所需的微博數(shù)據(jù)。

      通過(guò)分析微博數(shù)據(jù)編碼規(guī)范,可針對(duì)每一種微博數(shù)據(jù)進(jìn)行抽取模板定制,從而實(shí)現(xiàn)相關(guān)數(shù)據(jù)的高效全面抽取。如:在新浪微博用戶首頁(yè)中,所有微博鏈接信息均保存在DOM數(shù)結(jié)構(gòu)屬性為WB_feed WB_feed_profile的一對(duì)〈div〉節(jié)點(diǎn)內(nèi)。通過(guò)絕對(duì)路徑://[@node-type='feed_list_item_date']/@href可獲取當(dāng)前用戶發(fā)表的所有微博鏈接。在獨(dú)立微博頁(yè)面中通過(guò)絕對(duì)路徑://div[@class='WB_cardwrap WB_feed_type S_bg2']/@mid即可獲取當(dāng)前微博mid值。在微博評(píng)論頁(yè)面中通過(guò)絕對(duì)路徑://div[@node-type='replywrap']/div[@class='WB_text']/allText()可獲取評(píng)論用戶名及其評(píng)論內(nèi)容。

      4 實(shí)驗(yàn)分析

      本文提出了基于網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)獲取的微博數(shù)據(jù)爬蟲(chóng)抓取方案。測(cè)試中選擇抓取新浪微博平臺(tái)軍報(bào)記者微博賬號(hào)內(nèi)微博數(shù)據(jù),包括微博信息數(shù)據(jù)、評(píng)論信息數(shù)據(jù)、轉(zhuǎn)發(fā)信息數(shù)據(jù)和相關(guān)用戶信息數(shù)據(jù)。對(duì)數(shù)據(jù)抓取效果進(jìn)行統(tǒng)計(jì)分析,對(duì)方案爬蟲(chóng)性能進(jìn)行驗(yàn)證分析并針對(duì)影響其性能的原因進(jìn)行分析。

      4.1 數(shù)據(jù)抓取統(tǒng)計(jì)分析

      在本實(shí)驗(yàn)中對(duì)軍報(bào)記者微博賬號(hào)內(nèi)2015年2月4日14:40至2月9日16:00的100條微博數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析。爬蟲(chóng)爬取時(shí)間為2月4日15:24:54,即以該時(shí)刻的100條微博數(shù)據(jù)進(jìn)行截面研究。爬蟲(chóng)程序共爬取了該100條微博的共計(jì)2187條評(píng)論信息、4295條轉(zhuǎn)發(fā)信息和2489個(gè)用戶信息。其中評(píng)論信息包括評(píng)論ID、微博ID、評(píng)論用戶ID、評(píng)論用戶昵稱、評(píng)論內(nèi)容、評(píng)論時(shí)間,共六個(gè)字段值屬性。轉(zhuǎn)發(fā)信息包括轉(zhuǎn)發(fā)ID、源轉(zhuǎn)發(fā)ID、轉(zhuǎn)發(fā)時(shí)間,共三個(gè)字段值屬性。轉(zhuǎn)發(fā)層次深度未做設(shè)定,即抓取微博的所有轉(zhuǎn)發(fā)數(shù)據(jù)。用戶信息包括用戶ID、用戶主頁(yè)、用戶昵稱,共三個(gè)字段值屬性。用戶包含評(píng)論用戶和轉(zhuǎn)發(fā)用戶。綜合統(tǒng)計(jì)所有字段屬性總數(shù)據(jù)條目數(shù)量和有效數(shù)據(jù)條目數(shù)量,情況如表1所示。其中有效數(shù)據(jù)定義為程序準(zhǔn)確抽取,并正確保存在Mysql數(shù)據(jù)庫(kù)表中的字段屬性值。

      表1 數(shù)據(jù)準(zhǔn)確度統(tǒng)計(jì)

      從表1可以看出該方案對(duì)微博數(shù)據(jù)的抓取準(zhǔn)確度達(dá)到了較好的效果??梢詫?duì)微博傳播路徑分析、情感傾向分析等提供完整準(zhǔn)確的數(shù)據(jù)支持。

      4.2 爬蟲(chóng)抓取性能分析

      社交網(wǎng)站數(shù)據(jù)挖掘?qū)儆诖髷?shù)據(jù)范疇。微博信息數(shù)據(jù)量龐大,輿情分析需要海量數(shù)據(jù)作為基礎(chǔ)。單進(jìn)程爬蟲(chóng)往往很難滿足快速抓取大量數(shù)據(jù)進(jìn)行輿情分析的需求。本文采用支持并行架構(gòu)擴(kuò)展的網(wǎng)絡(luò)爬蟲(chóng)框架,可以實(shí)現(xiàn)多線程并行爬取。本實(shí)驗(yàn)仍針對(duì)以上100條微博數(shù)據(jù),通過(guò)開(kāi)啟不同線程數(shù),運(yùn)行爬蟲(chóng)程序查看其運(yùn)行速度及加速比。由于實(shí)驗(yàn)數(shù)據(jù)對(duì)象實(shí)時(shí)更新變化,各次抓取數(shù)據(jù)量會(huì)存在極微小差異,但不影響實(shí)驗(yàn)結(jié)論。爬蟲(chóng)程序在開(kāi)啟1個(gè)線程的情況下,完成以上100條微博數(shù)據(jù)的全面抓取并持久化到數(shù)據(jù)庫(kù),運(yùn)行時(shí)間為4554s。表2為不同線程下爬蟲(chóng)并行抓取時(shí)間及加速比。

      表2 并行抓取耗時(shí)及加速比

      由于方案基于動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù)獲取和頁(yè)面解析,爬蟲(chóng)程序在運(yùn)行過(guò)程中需開(kāi)啟、關(guān)閉瀏覽器,執(zhí)行Ajax動(dòng)態(tài)數(shù)據(jù)渲染,提取頁(yè)面導(dǎo)航元素,觸發(fā)導(dǎo)航事件并執(zhí)行頁(yè)面指令。因此對(duì)比微博API調(diào)用方式獲取數(shù)據(jù)更耗時(shí)。但方案以性能為代價(jià)獲取完整全面的微博數(shù)據(jù),是傳統(tǒng)微博數(shù)據(jù)爬蟲(chóng)和API調(diào)用方式不能比擬的。從實(shí)驗(yàn)結(jié)果可以看出,并行爬蟲(chóng)在多線程并發(fā)運(yùn)行方面具有較好的線性加速比。這說(shuō)明該方案對(duì)海量微博數(shù)據(jù)的抓取有著非常好的加速效果和潛力。通過(guò)合理設(shè)置爬蟲(chóng)并行線程數(shù),在保證網(wǎng)絡(luò)資源帶寬的條件下,可以快速高效的獲取微博數(shù)據(jù)。

      5 結(jié)語(yǔ)

      本文介紹了新浪微博數(shù)據(jù)獲取方式,對(duì)兩種獲取方式用法與限制進(jìn)行闡述和分析。解決了新浪微博數(shù)據(jù)因API限制和網(wǎng)絡(luò)爬蟲(chóng)限制而無(wú)法完整獲取的問(wèn)題。基于網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)獲取技術(shù),通過(guò)模擬登陸,確定頁(yè)面爬取策略,設(shè)計(jì)微博信息抽取模板和存儲(chǔ)方式,完成新浪微博數(shù)據(jù)挖掘的完整流程。實(shí)現(xiàn)了新浪微博數(shù)據(jù)定制化挖掘方案的實(shí)驗(yàn)與應(yīng)用。實(shí)驗(yàn)表明,基于網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)獲取,結(jié)合網(wǎng)絡(luò)爬蟲(chóng)技術(shù)和頁(yè)面解析技術(shù),對(duì)網(wǎng)絡(luò)爬蟲(chóng)進(jìn)行定制改造,能實(shí)現(xiàn)指定微博數(shù)據(jù)的高效和完整獲取,可以為社交網(wǎng)絡(luò)數(shù)據(jù)挖掘提供準(zhǔn)確全面的數(shù)據(jù)支持。

      [1] ABRAHAM R, MART NEZ T. Twittter: Network properties analysis[C]//Proceedings of the CONIELECOMP 2010-20th International Conference on Electronics Communications and Computers. Cholula Puebla, Mexico: IEEE Computer Society,2010:180- 183.

      [2] HAN Ruixia. The influence of microblogging on personal public partion[C]//Proceeding of the 2010 IEEE 2nd Symposium on Web Society, SWS 2010. Beijing, China: Association for Computing Machinery,2010:615-618.

      [3] 游翔,葛衛(wèi)麗.微博數(shù)據(jù)獲取技術(shù)及展望[J].電子科技,2014,27(10):123-126.

      [4] 陳舜華,王曉彤,等.基于微博API的分布式抓取技術(shù)[J].電信科學(xué),2013,8(25):147-149.

      [5] 周立柱,林玲.聚焦爬蟲(chóng)技術(shù)研究綜述[J].計(jì)算機(jī)應(yīng)用,2005,25(9):1965-1969.

      [6] 廉捷,周欣,曹偉.新浪微博數(shù)據(jù)挖掘方案[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,51(10):1300-1305.

      [7] 孫青云,等.一種基于模擬登錄的微博數(shù)據(jù)采集方案[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(3):7-8.

      [8] 新浪.微博API開(kāi)發(fā)文檔[EB/OL]. http://open.weibo.com/wiki/微博API,2014-11-12/2014-12-29.

      [9] 劉麗杰.垂直搜索引擎中聚焦爬蟲(chóng)技術(shù)的研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012:3-9.

      [10] 吳伶琳.基于Selenium的軟件自動(dòng)化測(cè)試的研究與應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2013,2(16):65-68.

      [11] 郭正彪.大尺度在線社會(huì)網(wǎng)絡(luò)結(jié)構(gòu)研究[D].武漢:華中科技大學(xué),2012:15-26.

      Date Crawler for Sina Microblog Based on Dynamic Webpage Date Interpreting

      ZHONG Mingxiang TANG Jintao XIE Songxian WANG Ting

      (College of Computer, National University of Defense Technology, Changsha 410073)

      Microblogging is a new kind of information media. The mass data are generated to attracts the attention of the researchers to carry out related research. Micro-blog data acquisition is the basis and starting point for further research. This paper presents a multi-threaded crawler for Sina microblog platform based on dynamic webpage interpreting. The browser kernel is used to interpret the dynamic data of microblog webpage. Through simulated login, the page crawling strategy based on the characteristics of social networking site is determined, and the webpage parsing technology is used to custom templates of webpage to achieve user-centric microblog data acquisition. The test results show that the method can capture microblog data of user comprehensive and efficiently, provide data support for subsequent dta analysis and processing.

      sina microblog, data mining, dynamic webpage, Web crawler

      2015年4月2日,

      2015年5月27日

      國(guó)家自然科學(xué)基金(編號(hào):61200337;61472436)資助。

      鐘明翔,男,碩士研究生,研究方向:自然語(yǔ)言處理。唐晉韜,男,博士,講師,研究方向:社會(huì)網(wǎng)絡(luò)分析、自然語(yǔ)言處理。謝松縣,男,博士,講師,研究方向:自然語(yǔ)言處理。王挺,男,博士,教授,博士生導(dǎo)師,研究方向:自然語(yǔ)言處理。

      DOI:10.3969/j.issn.1672-9730.2015.10.026

      猜你喜歡
      爬蟲(chóng)新浪網(wǎng)頁(yè)
      利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
      猴子雖小
      讀者(2021年20期)2021-09-25 20:30:35
      基于Python的網(wǎng)絡(luò)爬蟲(chóng)和反爬蟲(chóng)技術(shù)研究
      基于CSS的網(wǎng)頁(yè)導(dǎo)航欄的設(shè)計(jì)
      電子制作(2018年10期)2018-08-04 03:24:38
      利用爬蟲(chóng)技術(shù)的Geo-Gnutel la VANET流量采集
      基于URL和網(wǎng)頁(yè)類型的網(wǎng)頁(yè)信息采集研究
      電子制作(2017年2期)2017-05-17 03:54:56
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      新浪讀書(shū)排行榜
      網(wǎng)頁(yè)制作在英語(yǔ)教學(xué)中的應(yīng)用
      10個(gè)必知的網(wǎng)頁(yè)設(shè)計(jì)術(shù)語(yǔ)
      昌图县| 鹤壁市| 庆元县| 海南省| 柳河县| 闽清县| 安陆市| 冀州市| 梁河县| 潮安县| 元氏县| 扬中市| 方城县| 阿合奇县| 广丰县| 荆门市| 邢台县| 白河县| 沙湾县| 潞西市| 五指山市| 梅河口市| 怀来县| 康乐县| 武山县| 宜宾县| 祁东县| 西充县| 商河县| 卢龙县| 宁明县| 北海市| 双流县| 抚远县| 拉萨市| 东海县| 屯门区| 曲阜市| 富裕县| 广宁县| 修水县|