999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于動態網頁解析的微博數據抓取方法*

2015-03-14 12:32:27鐘明翔唐晉韜謝松縣
艦船電子工程 2015年10期
關鍵詞:頁面用戶信息

鐘明翔 唐晉韜 謝松縣 王 挺

(國防科學技術大學計算機學院 長沙 410073)

?

一種基于動態網頁解析的微博數據抓取方法*

鐘明翔 唐晉韜 謝松縣 王 挺

(國防科學技術大學計算機學院 長沙 410073)

微博是一種新型信息傳播媒介,產生的海量數據吸引研究人員關注并開展相關研究。微博數據獲取是后續分析研究的基礎和起點。以新浪微博平臺為研究對象,提出了基于動態網頁解析技術的微博數據多線程抓取方法。方法利用瀏覽器內核解析微博頁面動態數據,通過模擬登陸,依據社交網站網頁鏈接特點確定頁面爬取策略,使用頁面解析技術定制頁面數據抽取模板,實現以用戶為中心的微博數據獲取。抓取結果表明,方法能對微博用戶數據進行全面高效抓取,為后續數據分析和處理提供數據支持。

新浪微博; 數據挖掘; 動態網頁; 爬蟲

Class Number

1 引言

近年來,社交媒體在互聯網上迅速發展和普及。在線社交網站、博客、維基、微博等社交網絡應用在普通大眾中不斷普及和深入。微博以其平臺的開放性、內容發布的低門檻特性發展為重要的社會化媒體。Twitter自2006年創建以來,用戶數量一直保持高速增長勢頭。2009年用戶增長率高達2565%,是社交網站Facebook和LinkedIn用戶增長率總和的10倍[1]。新浪自2009年8月推出微博產品以來,迅速成長為中國微博平臺代表。截止2014年底,微博用戶數量超5.3億,月活躍用戶數量達到1.76億,目前是中國最具影響力和關注度的微博平臺。

網民通過微博平臺發布和獲取信息、表達自我,形成社會輿論。以信息傳播為載體維系網絡社會關系。微博已經逐漸對社會發展和國家安全產生深遠影響。以Facebook、Twitter為代表的社交網站,已經多次證明它們在一些社會事件中扮演著舉足輕重的角色。利用微博數據進行輿情分析和潛在客戶發掘,使微博數據挖掘具有重大的社會意義和巨大商業價值。

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

通過對不同微博數據抓取方式進行分析,本文選擇基于網頁動態數據解析的爬蟲方案,并實現了一個以登錄用戶相關的微博數據抓取系統。

2 現有微博獲取方式分析

綜合分析目前兩種獲取微博數據的方案: 1) 通過API調用能簡潔高效獲取便于分析的結構化數據,但在調用頻次和返回結果最大數量有諸多限制。 2) 使用網絡爬蟲方案比較靈活,可基于模擬登陸和網頁數據解析獲取相關數據,但實現難度較大,且無法獲取結構化的微博數據。

2.1 新浪微博API

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

出于商業利益和服務器安全考慮,新浪微博API從用戶維度和IP維度,對不同授權級別開發者進行了訪問頻次限制。為防止用戶調用API進行非法操作,新浪微博開放平臺針對API的返回數據量和調用次數也進行了嚴格限制。且微博API技術原理是HTTP輪詢(POLLING),非即時推送(realtime push)協議。調用API不能達到及時獲取最新消息的效果。

2.2 網絡爬蟲

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

Ajax是一種創建快速動態網頁技術。可在不重新加載整個網頁情況下,通過后臺與服務器進行少量數據交換,實現網頁某個部分的異步更新。為減少網絡傳輸流量,提高用戶體驗度,微博網站對Ajax技術應用越來越多。目前新浪微博的評論和轉發信息都是由JavaScript動態生成。由于Ajax頁面是由客戶端瀏覽器執行腳本代碼動態生成。因此網絡爬蟲僅能抓取web服務器返回的html文件,不能抓取JavaScript動態生成的信息。同時由于新浪微博的用戶隱私保護策略,只有登錄的用戶才能對評論、轉發等頁面信息進行瀏覽。因此,使用網絡爬蟲必須解決網頁客戶端動態數據獲取和模擬登陸兩個問題。

3 基于網頁動態數據獲取的爬蟲方案實現

3.1 爬蟲框架下動態網頁數據獲取技術

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

圖1 網絡爬蟲框架

3.2 模擬登陸

使用爬蟲對微博網頁進行爬取之前,首先需要進行模擬登錄。模擬登陸通過Java程序模擬瀏覽器行為實現登陸過程。模擬登陸程序通過webdriver打開登陸頁面。使用findElement方法進行頁面元素查找和定位。在頁面元素內通過讀取配置文件模擬輸入用戶名、密碼,提交按鈕完成模擬登陸流程。模擬登陸基本實現過程如下:

1) 利用webdriver打開登陸頁面。

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

3) 通過查找和點擊提交按鈕完成登陸流程。

程序模擬登陸成功后,通過調用瀏覽器內核向服務器發送數據請求來實現微博網頁的獲取。通過客戶端保持與服務器的session會話即可繼續訪問微博的其它數據資源。

3.3 針對社交網站網頁特征的抓取

從網絡數據的拓撲特征上講,社交網站數據屬性區別于一般的普通網站。社交網站網絡數據分為兩大類[11]:用戶信息數據和微博信息數據。用戶信息數據主要字段包括:用戶UID、昵稱、所在城市、微博數、粉絲數、關注數、注冊時間、用戶認證類型等。微博信息數據主要字段包括:作者信息、微博ID、發布時間、內容、評論數、轉發數等。社交網站數據存在兩個維度的網絡:第一個是用戶關系網絡。其節點是用戶,邊是用戶之間的關注關系。第二個是信息傳播網絡。其節點是用戶,邊是針對同一主題用戶之間的轉發評論關系。

面對海量龐雜的微博網站數據,必須確定合適的頁面抓取策略,才能實現對特定微博所有數據進行完整獲取。本文針對社交網站數據的屬性特征使用如下頁面抓取策略:

1) 以微博用戶首頁設為初始頁面,作為爬蟲的入口。通過爬蟲頁面下載模塊進行動態頁面數據獲取,從中抽取出微博用戶發布的所有微博鏈接。

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

3) 從每條微博獨立頁面中抓取微博數據信息(作者信息、微博ID、源微博ID、發布時間、內容、評論數、轉發數、點贊數)。

4) 從微博評論頁面中通過模擬瀏覽器行為進行點擊和翻頁,抓取評論信息(評論內容、評論時間、評論作者ID、評論作者名稱、評論作者微博主頁)。

5) 從微博轉發頁面中通過模擬瀏覽器行為進行點擊和翻頁,抓取轉發數據(轉發ID、轉發源ID、轉發時間)。

6) 將每一條轉發信息作為一條微博,從中抽取出鏈接放入待抽取隊列。

然后重復步驟3)至6),由此即可以獲取特定微博用戶發布微博的完整相關信息數據。程序通過設置最大轉發層次數,來控制爬蟲的抓取深度。程序抓取過程如圖2所示。

圖2 網頁數據爬取策略

3.4 頁面解析技術

爬蟲頁面下載模塊通過調用瀏覽器內核,獲取微博頁面完整的HTML格式文件。經過分析新浪微博頁面編碼,發現該平臺內相同頁面類型的編碼規則一樣。因此可以針對新浪微博頁面編碼規則,深度定制微博頁面信息解析抽取模板,即可實現同類型微博頁面數據的解析抽取。通過將不標準的HTML語言轉換為DOM數結構,利用xpath和正則表達式等頁面解析技術,可實現微博頁面數據的高效精確獲取。xpath使用路徑表達式對HTML頁面文件節點元素進行定位選取。正則表達式通過字符串描述、匹配符合規則的字符串。使用正則表達式可摘取字符串中需要的指定內容。把二者結合起來,通過鏈式抽取可以準確高效地解析出所需的微博數據。

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

4 實驗分析

本文提出了基于網頁動態數據獲取的微博數據爬蟲抓取方案。測試中選擇抓取新浪微博平臺軍報記者微博賬號內微博數據,包括微博信息數據、評論信息數據、轉發信息數據和相關用戶信息數據。對數據抓取效果進行統計分析,對方案爬蟲性能進行驗證分析并針對影響其性能的原因進行分析。

4.1 數據抓取統計分析

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

表1 數據準確度統計

從表1可以看出該方案對微博數據的抓取準確度達到了較好的效果。可以對微博傳播路徑分析、情感傾向分析等提供完整準確的數據支持。

4.2 爬蟲抓取性能分析

社交網站數據挖掘屬于大數據范疇。微博信息數據量龐大,輿情分析需要海量數據作為基礎。單進程爬蟲往往很難滿足快速抓取大量數據進行輿情分析的需求。本文采用支持并行架構擴展的網絡爬蟲框架,可以實現多線程并行爬取。本實驗仍針對以上100條微博數據,通過開啟不同線程數,運行爬蟲程序查看其運行速度及加速比。由于實驗數據對象實時更新變化,各次抓取數據量會存在極微小差異,但不影響實驗結論。爬蟲程序在開啟1個線程的情況下,完成以上100條微博數據的全面抓取并持久化到數據庫,運行時間為4554s。表2為不同線程下爬蟲并行抓取時間及加速比。

表2 并行抓取耗時及加速比

由于方案基于動態網頁數據獲取和頁面解析,爬蟲程序在運行過程中需開啟、關閉瀏覽器,執行Ajax動態數據渲染,提取頁面導航元素,觸發導航事件并執行頁面指令。因此對比微博API調用方式獲取數據更耗時。但方案以性能為代價獲取完整全面的微博數據,是傳統微博數據爬蟲和API調用方式不能比擬的。從實驗結果可以看出,并行爬蟲在多線程并發運行方面具有較好的線性加速比。這說明該方案對海量微博數據的抓取有著非常好的加速效果和潛力。通過合理設置爬蟲并行線程數,在保證網絡資源帶寬的條件下,可以快速高效的獲取微博數據。

5 結語

本文介紹了新浪微博數據獲取方式,對兩種獲取方式用法與限制進行闡述和分析。解決了新浪微博數據因API限制和網絡爬蟲限制而無法完整獲取的問題。基于網頁動態數據獲取技術,通過模擬登陸,確定頁面爬取策略,設計微博信息抽取模板和存儲方式,完成新浪微博數據挖掘的完整流程。實現了新浪微博數據定制化挖掘方案的實驗與應用。實驗表明,基于網頁動態數據獲取,結合網絡爬蟲技術和頁面解析技術,對網絡爬蟲進行定制改造,能實現指定微博數據的高效和完整獲取,可以為社交網絡數據挖掘提供準確全面的數據支持。

[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] 游翔,葛衛麗.微博數據獲取技術及展望[J].電子科技,2014,27(10):123-126.

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

[5] 周立柱,林玲.聚焦爬蟲技術研究綜述[J].計算機應用,2005,25(9):1965-1969.

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

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

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

[9] 劉麗杰.垂直搜索引擎中聚焦爬蟲技術的研究[D].哈爾濱:哈爾濱工業大學,2012:3-9.

[10] 吳伶琳.基于Selenium的軟件自動化測試的研究與應用[J].計算機與現代化,2013,2(16):65-68.

[11] 郭正彪.大尺度在線社會網絡結構研究[D].武漢:華中科技大學,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日

國家自然科學基金(編號:61200337;61472436)資助。

鐘明翔,男,碩士研究生,研究方向:自然語言處理。唐晉韜,男,博士,講師,研究方向:社會網絡分析、自然語言處理。謝松縣,男,博士,講師,研究方向:自然語言處理。王挺,男,博士,教授,博士生導師,研究方向:自然語言處理。

DOI:10.3969/j.issn.1672-9730.2015.10.026

猜你喜歡
頁面用戶信息
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
同一Word文檔 縱橫頁面并存
淺析ASP.NET頁面導航技術
主站蜘蛛池模板: 色老头综合网| 成人午夜免费观看| 亚洲一欧洲中文字幕在线| 亚洲国产成人麻豆精品| 91无码视频在线观看| 秋霞午夜国产精品成人片| 久久国产高潮流白浆免费观看| 国产情侣一区二区三区| 天堂岛国av无码免费无禁网站 | 欧美激情第一欧美在线| 99视频在线免费| 欧美在线视频不卡第一页| 欧美日本不卡| 综合色婷婷| 免费观看亚洲人成网站| 国产在线观看一区精品| 亚洲人成人伊人成综合网无码| 亚洲第一区欧美国产综合| 免费看黄片一区二区三区| 亚洲中久无码永久在线观看软件| 无码一区二区三区视频在线播放| 日韩第一页在线| 日本欧美一二三区色视频| 日本亚洲成高清一区二区三区| 国产一级在线观看www色| 一本大道无码日韩精品影视| 免费a级毛片视频| 中文字幕无线码一区| 色综合网址| 久久久久亚洲av成人网人人软件 | 91久久夜色精品国产网站| 午夜在线不卡| 亚洲资源在线视频| 欧美日韩国产高清一区二区三区| 国产成人久久777777| 国产肉感大码AV无码| 欧美在线伊人| 亚洲精品欧美日本中文字幕 | www精品久久| 精品人妻无码中字系列| 在线观看精品国产入口| 亚洲欧美日韩另类在线一| 欧美一级在线播放| 中国毛片网| 99免费在线观看视频| 国产丝袜一区二区三区视频免下载| 亚洲熟女偷拍| 毛片久久久| 日韩乱码免费一区二区三区| 日本免费福利视频| 国产色爱av资源综合区| 人妻精品久久久无码区色视| 2024av在线无码中文最新| 亚州AV秘 一区二区三区| 日韩大片免费观看视频播放| 成年A级毛片| 精品亚洲欧美中文字幕在线看| 99r在线精品视频在线播放| 最近最新中文字幕免费的一页| 综合网天天| 亚洲综合片| 91黄色在线观看| 一本久道久综合久久鬼色| 免费人成在线观看视频色| 国产午夜福利在线小视频| 日韩天堂视频| 亚洲色婷婷一区二区| 久久久久人妻一区精品| 日韩专区第一页| 国产a在视频线精品视频下载| 亚洲成人在线网| 亚洲中文字幕久久精品无码一区| 国产黄色视频综合| 久久香蕉国产线看观看精品蕉| 大香网伊人久久综合网2020| A级毛片高清免费视频就| 久精品色妇丰满人妻| 国产一区三区二区中文在线| 亚洲一区二区日韩欧美gif| 色妞www精品视频一级下载| 99re视频在线| 亚洲国产精品无码AV|