• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Nutch的多源社交媒體情報采集系統(tǒng)

    2019-11-19 02:12:16傅魁覃桂雙
    關鍵詞:帖子列表情報

    傅魁,覃桂雙

    (武漢理工大學 經(jīng)濟學院,湖北 武漢 430070)

    一、引 言

    中國互聯(lián)網(wǎng)絡信息中心第42次《中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告》顯示,截至2018年6月30日,我國網(wǎng)民規(guī)模達8.02億,首次超過8億,互聯(lián)網(wǎng)普及率為57.7%[1]。互聯(lián)網(wǎng)成為當今社會信息傳播的重要載體,基于互聯(lián)網(wǎng)技術而生的新型網(wǎng)絡交互平臺——社交媒體(social media)[2]隨之在全球廣泛應用,對社會的政治生活、網(wǎng)絡安全、商業(yè)活動及公共事件等方面產(chǎn)生深遠影響。高速發(fā)展的社交媒體平臺成為互聯(lián)網(wǎng)情報收集場新重心[3]。

    當前的情報采集系統(tǒng)主要面向單個應用[4-9],存在應用范圍窄、采集效率低等問題,而針對各類社交媒體平臺的通用采集系統(tǒng)仍然屈指可數(shù)。因此,在社交媒體情報采集非常必要的前提下,基于對情報采集系統(tǒng)通用性和高效性要求的綜合考慮,充分利用Nutch[10]開源技術在網(wǎng)絡抓取方面的優(yōu)勢,構建多源社交媒體情報采集系統(tǒng)勢在必行。為了實現(xiàn)對互聯(lián)網(wǎng)上多源社交媒體情報的采集,筆者設計了一個基于新聞、論壇、貼吧、微博等互聯(lián)網(wǎng)平臺的社交媒體情報通用采集系統(tǒng),以期通過該系統(tǒng)實現(xiàn)對互聯(lián)網(wǎng)社交媒體平臺情報的全方位采集,準確及時、大批量地自動獲取互聯(lián)網(wǎng)情報,擺脫人工采集的繁雜與不便,同時為媒體監(jiān)測、輿情分析、數(shù)據(jù)挖掘及在線社會支持等相關領域提供大量準確的數(shù)據(jù)支持。

    二、多源社交媒體情報采集系統(tǒng)整體結構

    本文采用模塊化程序設計思想,經(jīng)過對Nutch改進和擴展之后的采集系統(tǒng)整體模塊架構如圖1所示。整個系統(tǒng)以Nutch采集組件模塊為架構基礎,將社交媒體情報平臺模塊作為系統(tǒng)入口,將網(wǎng)絡新聞采集模塊、論壇貼吧采集模塊和微型博客采集模塊作為核心工作單位進行情報采集,最后將采集結果輸出至情報數(shù)據(jù)存儲中心模塊。

    其中,社交媒體平臺模塊的主要作用是向系統(tǒng)輸送多源社交媒體情報采集源,支持平臺包括網(wǎng)易新聞、今日頭條等新聞平臺,百度貼吧、豆瓣等貼吧論壇平臺,以及新浪微博、騰訊微博等微博平臺。情報數(shù)據(jù)存儲中心模塊由采集源數(shù)據(jù)庫、新聞內容數(shù)據(jù)庫、論壇貼吧內容數(shù)據(jù)庫、微博內容數(shù)據(jù)庫四部分組成。采集源數(shù)據(jù)庫用于存儲URL、請求參數(shù)、解析模板等采集源數(shù)據(jù),而內容數(shù)據(jù)庫實現(xiàn)對系統(tǒng)抽取解析輸出的情報數(shù)據(jù)進行存儲和備份。

    圖1 社交媒體采集系統(tǒng)結構

    (一)Nutch采集組件模塊

    Nutch采集組件模塊以Nutch原有框架和部分組件作為系統(tǒng)基礎,針對新任務需求進行抓取流程的修改和完善,解決了采集解析多源社交媒體情報方面的關鍵問題。該模塊由采集列表組件、抓取組件、更新組件、解析組件等功能組件組成。采集列表組件將采集源數(shù)據(jù)庫中存儲的社交媒體URL分成多個待檢索組別,抓取組件用于檢索這些URL對應的網(wǎng)頁源碼并保存到本地,更新組件實現(xiàn)更新采集系統(tǒng)抓取結果并標記本次抓取是否成功的功能,解析組件實現(xiàn)對數(shù)據(jù)進行排序、分類、去重、過濾等功能。組件中的解析模板對網(wǎng)頁源碼內容解析并定位,URL解析出來的頁面內容、解析網(wǎng)址、URL抓取后的狀態(tài)等信息分別保存至Content、Parse_url和Crawl_fetch等輸出文件中。

    (二)網(wǎng)絡新聞采集模塊

    網(wǎng)絡新聞采集模塊由新聞網(wǎng)站排名模塊、新聞頻道采集模塊、新聞文章采集模塊、新聞模板解析模塊四個子模塊組成。本系統(tǒng)根據(jù)新聞類網(wǎng)站的綜合指標對各大新聞網(wǎng)站進行分析,以確定新聞采集的綜合來源并形成采集入口。新聞頻道采集模塊主要有兩個作用:獲取頻道類別中的頻道名稱列表,采集同一頻道下的所有新聞文章頁的鏈接URL列表。新聞文章采集模塊從新聞鏈接URL列表中的各項找到新聞文章頁,以實現(xiàn)獲取新聞文章頁代碼并進行相關新聞信息采集兩個功能。新聞網(wǎng)站的解析模板包括頻道解析模板和文章解析模板,分別用于分析頻道中的新聞列表網(wǎng)頁以及具體新聞文章網(wǎng)頁的源代碼,并使用正則表達式等技術進行信息匹配,以確定要采集或過濾的數(shù)據(jù)塊。

    (三)論壇貼吧采集模塊

    論壇貼吧采集模塊包含論壇模板解析模塊、論壇版塊采集模塊、論壇帖子采集模塊、論壇領域建模模塊四個子模塊。論壇領域建模模塊用于建立論壇領域模型,確立版塊及帖子的采集方法與相應的數(shù)據(jù)存儲方式。版塊用于劃分相同主題的帖子,論壇版塊采集模塊對采集的論壇中主題相同的帖子進行內容的采集解析。帖子是論壇的最根本產(chǎn)物,包括主帖和回帖,論壇帖子采集模塊實現(xiàn)對板塊中具體帖子的內容進行采集抽取及存儲的功能。論壇模板解析模塊根據(jù)論壇的結構特點,采取分塊解析的方式從版塊及帖子網(wǎng)頁源代碼中抽取出結構化的數(shù)據(jù)塊,并解析出對應的數(shù)據(jù)項,封裝存儲,以備他用。

    (四)微型博客采集模塊

    微型博客采集模塊主要由微博模擬登錄模塊、微博話題采集模塊、微博頁面采集模塊、微博模板解析模塊四個子模塊構成。由于目前的微博系統(tǒng)都需要用戶登錄才能瀏覽,本系統(tǒng)設計模擬登錄模塊通過微博平臺提供的API接口模擬登錄工作,再采用基于HTTP請求的爬蟲技術進行數(shù)據(jù)抓取。話題采集模塊實現(xiàn)抓取微博話題中關鍵字的功能,進而通過微博頁面采集模塊抓取具體微博內容。微博數(shù)據(jù)解析模塊利用話題解析模板及微博解析模板對抓取到的數(shù)據(jù)進行轉換并進一步解析,以滿足系統(tǒng)微博領域模型的形式,同時對所有微博內容建立索引,最終保存數(shù)據(jù)到微博情報數(shù)據(jù)庫中。

    三、基于Nutch的多源社交媒體情報采集

    首先,分別針對各采集模塊建立領域模型,在社交媒體情報采集領域數(shù)據(jù)庫設計相應實體;然后,根據(jù)社交媒體平臺的模塊化抓取思路,在Nutch開源技術的基礎上對系統(tǒng)進行設計改進,抓取流程分為兩輪;最后,基于領域實體作內容解析,即從網(wǎng)頁源代碼中根據(jù)需要抽取出結構化的數(shù)據(jù)并封裝為領域對象,采集的各狀態(tài)信息及采集到的網(wǎng)頁內容保存于相應的數(shù)據(jù)庫中。根據(jù)社交媒體平臺的結構特點,本文采用“分塊解析”的方法,從一個頁面中定位出每一個數(shù)據(jù)塊,這些數(shù)據(jù)塊通常具有相同或相似的源碼特征,再進一步抽取出對應的數(shù)據(jù)項,每個數(shù)據(jù)項對應有邏輯意義的一個領域概念,多個數(shù)據(jù)項能夠組成領域實體。

    (一)網(wǎng)絡新聞情報數(shù)據(jù)采集

    1.網(wǎng)絡新聞領域建模

    網(wǎng)絡新聞采集領域數(shù)據(jù)庫的主要實體包括頻道、新聞、評論、圖片、網(wǎng)站等(如圖2所示)。頻道用于劃分主題相同的新聞,包含頻道ID、URL、名稱等屬性,由若干篇新聞組成。新聞包含評論及圖片,以及其他屬性——網(wǎng)站ID、獲取人ID、獲取時間、關鍵字、內容、頻道ID、URL、新聞來源、編輯人、發(fā)表時間、標題、新聞ID等。評論的屬性包括父評論ID、評論內容、新聞ID、評論ID等。圖片包含圖片URL、新聞ID等屬性。網(wǎng)站是新聞主頁網(wǎng)站,其屬性包括名稱、URL、網(wǎng)站ID、權重等。

    圖2 網(wǎng)絡新聞領域實體

    2.采集流程實現(xiàn)

    網(wǎng)絡新聞采集由新聞頻道采集和新聞文章采集兩輪采集實現(xiàn),采集流程如圖3所示。

    圖3 網(wǎng)絡新聞采集流程

    首先,根據(jù)Alexa排名和CIIS排名的綜合指標對各大新聞網(wǎng)站進行分析,計算網(wǎng)站權重并排序,以確定新聞采集的綜合來源,從中選取一個新聞網(wǎng)站的主頁作為采集入口,并將其注入新聞采集源數(shù)據(jù)庫(即新聞采集源DB中),Reducer同時將相同key值對應的多個value值進行合并。此時進入新聞頻道采集模塊抓取頻道列表頁面的頻道名稱,采集列表組件選取符合條件的URL生成待抓取列表,抓取組件將URL地址作為輸入,生成存放頻道頁面內容、每個下載URL狀態(tài)的Content和Crawl_fetch兩個文件夾,并由解析組件的解析模板對Content里面的二進制源代碼內容進行解析和整理,抽取出的外部鏈接、頻道名稱以及相應的所有新聞列表等分別存放在Parse_data和Pase_text等文件夾中。隨后解析組件會進行二次解析,調用解析分頁的插件來解析頻道下一頁的URL,并以此來判斷抓取行為是否達到配置文件所設定的最大值。若未達到最大抓取值,則將該URL生成一個抓取項,放入抓取隊列中,抓取組件和解析組件對其重復之前的操作,直至抓取的頁數(shù)達到最大值為止,至此,頻道采集工作完成。

    接著進入新聞文章頁面采集模塊,將前面抓取解析出的新聞列表信息注入到文章采集數(shù)據(jù)庫中,新注入的新聞列表URL形成待抓取隊列,抓取組件根據(jù)該隊列將對應頁面源代碼的內容抓取到本地,并由解析組件對抓取的網(wǎng)頁進行分塊解析,將文章的ID、標題、發(fā)表時間、編輯人、來源、URL、頻道ID、文章內容、關鍵字、獲取時間、獲取人ID、網(wǎng)站ID等輸出并保存到Parse_text文件夾中。另外,解析組件再次調用分頁插件解析文章最后一頁的URL,將該URL生成一個抓取項,直到同一篇新聞文章的抓取達到最大頁數(shù)。如果文章的分頁抓取從最后一頁往前抓取時,解析出上一頁的URL。最后進入更新單元,更新組件不斷更新URL抓取隊列,解析出新的外鏈。

    最后,根據(jù)建立索引的算法對所有新聞文章創(chuàng)建索引,包括地址、關鍵詞、內容等,供后續(xù)進行不同類型的內容的搜索、分類及匹配,并將相應數(shù)據(jù)保存到新聞情報數(shù)據(jù)庫中。

    3.新聞內容解析

    首先用Xpath對初始URL對應的網(wǎng)頁源代碼進行抽取,定位新聞頻道列表網(wǎng)頁數(shù)據(jù)塊,解析出該頻道下的頻道名稱列表及其對應的URL和頻道ID。進一步定位具體新聞文章頁面數(shù)據(jù)塊,輸出文章ID、標題、發(fā)表時間、編輯人、來源、URL、頻道ID、文章內容、關鍵字、獲取時間、獲取人ID、網(wǎng)站ID等相應的數(shù)據(jù)項,以及評論、圖片等數(shù)據(jù)塊到Parse_text中。解析單元對這些數(shù)據(jù)塊進行析取,進而解析出父評論ID、評論內容、用戶名、新聞ID、圖片URL、圖片ID等數(shù)據(jù)項。最后,系統(tǒng)將這些抽取的內容封裝得到新聞領域對象。

    (二)論壇貼吧情報數(shù)據(jù)采集

    1.論壇貼吧領域建模

    論壇貼吧采集領域數(shù)據(jù)庫主要設計如下實體:主帖、回帖、用戶、帖子列表網(wǎng)頁、帖子網(wǎng)頁等。每位用戶每發(fā)表一次即產(chǎn)生一個帖子,帖子的頁面由主帖和回帖組成,進行分頁顯示,主帖在第一頁,可以沒有回帖。板塊的頁面是帖子列表網(wǎng)頁,進行分頁顯示,由一條條帖子(主帖)的基本信息組成,一般不顯示回帖的信息。論壇貼吧領域實體如圖4所示。

    圖4 論壇貼吧領域實體

    2.采集流程實現(xiàn)

    論壇貼吧采集由論壇版塊采集和論壇帖子采集兩輪采集實現(xiàn),采集流程如圖5所示。

    首先進行版塊采集。從采集源DB中將采集源注入到論壇版塊采集數(shù)據(jù)庫中,采集列表組件選取URL生成待抓取列表,接著抓取組件抓取出URL對應的網(wǎng)頁內容,并由解析組件中從網(wǎng)頁內容中抽取出所需數(shù)據(jù),包括解析帖子列表,解析并抓取下一頁,修改輸出格式,用“多輸出”輸出帖子列表信息等操作。此外,解析組件會進行二次解析,抓取組件及解析組件循環(huán)直至抓取頁數(shù)達到設定最大值。至此,版塊采集工作完成。

    隨后進行帖子采集。先將上一輪板塊抓取解析出的帖子信息,從Parse_url中注入到帖子采集數(shù)據(jù)庫中,同時進行合并,以比較帖子的更新時間,將有更新的帖子的狀態(tài)改為unfetched。接著選出所有狀態(tài)為unfetched的URL并產(chǎn)生待抓取列表。抓取組件完整抓取URL對應的網(wǎng)頁內容,同時解析組件對網(wǎng)頁內容進行解析,抽取主帖與回帖的信息,解析并抓取下一頁,覆蓋Nutch的Parse_text輸出等操作。另外,解析組件再次解析帖子末尾頁URL,循環(huán)進行調用抓取及解析組件,直到抓取達到最大頁數(shù),則停止抓取。最后,更新組件將抓取的狀態(tài)更新到帖子采集數(shù)據(jù)庫中,不斷更新解析出的外鏈。

    圖5 論壇貼吧采集流程

    3.論壇貼吧內容解析

    針對論壇貼吧的解析模板包括版塊解析模板和帖子解析模板。系統(tǒng)首先抽取初始網(wǎng)頁源代碼并定位到帖子列表網(wǎng)頁數(shù)據(jù)塊,解析出該板塊下的所有主帖列表。進一步定位其對應的主帖,抽取輸出帖子URL、主題、內容、發(fā)表時間、點擊數(shù)、回復數(shù)等相應的數(shù)據(jù)項,解析內容、解析網(wǎng)址及爬取時間等信息會分別輸出保存至Content、Parse_url和Parse_data等輸出文件中。該主帖數(shù)據(jù)塊對應帖子列表數(shù)據(jù)塊,進一步對該數(shù)據(jù)塊進行解析,抽取出回帖數(shù)據(jù)塊,輸出回帖內容、發(fā)表時間等數(shù)據(jù)項。其中,主帖和回帖兩個數(shù)據(jù)塊均可以定位到用戶數(shù)據(jù)塊,進而解析出用戶URL、名稱等數(shù)據(jù)項。最后,對輸出內容進行封裝,得到論壇貼吧領域對象。

    (三)微型博客情報數(shù)據(jù)采集

    1.微型博客領域建模

    針對微博采集領域數(shù)據(jù)庫設計如下實體:微博、用戶、轉發(fā)、評論、微博話題等。其中,微博和用戶是其他實體概念的基礎。微博包含評論與轉發(fā),以及ID、URL、內容、抓取時間、轉發(fā)數(shù)、評論數(shù)、發(fā)表時間等屬性。用戶是發(fā)微博或對微博進行評論或轉發(fā)的人,屬性包括名稱、URL、ID、關注數(shù)、粉絲數(shù)、微博數(shù)、等級、認證方式等。微博話題由若干主題相同的微博組成,其屬性包括URL、話題名稱等。微型博客領域實體如圖6所示。

    圖6 微型博客領域實體

    2.采集流程實現(xiàn)

    微博采集由微博話題采集和微博頁面采集兩輪采集實現(xiàn),采集流程如圖7所示。

    圖7 微型博客采集流程

    微博采集源數(shù)據(jù)庫中的采集源包括URL、請求時所需發(fā)送的參數(shù)、下一頁的構造方式、解析返回數(shù)據(jù)的模版。由于用戶隱私策略限制,只有登錄并通過驗證后的用戶才能訪問微博所有的相關信息。復雜的登錄機制問題對網(wǎng)絡爬蟲[11]提出了很大的難題,而API[12-13]在數(shù)據(jù)獲取速度、調用次數(shù)等多方面存在限制,通過微博API調用只能抓取有限的數(shù)據(jù)。因此,本系統(tǒng)設計方案首先通過API接口來實現(xiàn)爬取系統(tǒng)對微博頁面的模擬登錄,然后使用網(wǎng)絡爬蟲來實現(xiàn)微博話題名稱以及具體話題下微博的抓取工作。

    首先進行話題采集。將采集源注入微博話題板塊數(shù)據(jù)庫,創(chuàng)建待抓取話題名稱相應的URL列表并寫入segments目錄中。抓取組件依次抓取該目錄下的列表網(wǎng)頁內容,同時解析組件使用話題解析模板對抓取到的頁面進行解析整理。再從采集到的話題中選取一個作為種子話題,將其析取出的相關信息輸入抓取隊列,進一步獲取這個話題中的具體微博列表。其中,抓取話題名稱以及微博列表的下一頁是以參數(shù)p作為頁數(shù)添加在HTTP請求里面的。在每次獲取HTML數(shù)據(jù)的時候,解析單元先查驗是否包含“下一頁”三個字的鏈接,若包含,則說明還有下一頁,繼續(xù)進行抓取解析操作,否則停止抓取。每次抓完之后,p都需要加1,依次循環(huán),直到輸出所有頁面話題名稱及微博列表。

    隨后進行微博采集。將在話題采集模塊解析出的微博信息注入到微博采集數(shù)據(jù)庫中,更新微博狀態(tài)并生成待抓取隊列。微博在進入一個話題頁面的時候,在頁面下方會顯示關于該話題的當前最新微博,這些微博是以話題名稱為關鍵字利用微博搜索功能搜索出來的,系統(tǒng)通過發(fā)送HTTP請求獲取最新的微博,在這個過程中系統(tǒng)會根據(jù)內容做一次去重和刪除垃圾內容的操作。抓取組件抓取相應的頁面內容,同時調用解析組件對抓取到的內容進行解析整理,將最初微博抓取返回的JOSN格式數(shù)據(jù)先轉為HTML格式文本,再利用頁面解析模板去除其中HTML標簽、無用鏈接等冗余數(shù)據(jù),然后將這些數(shù)據(jù)進一步解析為滿足系統(tǒng)概念模型的微博形式,將頁面分解得到的微博所屬話題名稱、用戶、時間、鏈接等內容保存為Parse_data文件。同樣,采用分頁插件解析話題微博列表末尾頁的URL,循環(huán)調用抓取和解析組件,直到抓取至最大頁數(shù)。最后,對所有微博創(chuàng)建索引并保存到微博數(shù)據(jù)庫中。

    3.微博內容解析

    解析微博話題列表和具體微博內容的方式相似,區(qū)別在于解析模板不同,后者需要解析的內容更多。系統(tǒng)首先對初始URL對應的網(wǎng)頁源代碼進行抽取,定位微博話題列表網(wǎng)頁數(shù)據(jù)塊,解析出該話題下的所有微博名稱列表及其對應的URL。進一步定位具體微博頁面數(shù)據(jù)塊,輸出微博URL、內容、發(fā)表時間、轉發(fā)數(shù)、評論數(shù)、抓取時間、微博ID等相應的數(shù)據(jù)項,并分別保存到相應的文件中。由評論和轉發(fā)兩個數(shù)據(jù)塊定位至用戶數(shù)據(jù)塊,并解析輸出用戶URL、名稱、ID關注數(shù)、粉絲數(shù)、微博數(shù)、等級、認證方式等數(shù)據(jù)項。最后,系統(tǒng)將所有解析輸出的內容進行封裝,得到微博領域對象。

    四、結 語

    在對社交媒體平臺結構特點進行深入分析的基礎上,借助Nutch開源搜索引擎框架并加以改進,設計了一種模塊化的多源社交媒體情報采集系統(tǒng)。以不同平臺需求為基礎,采取新聞網(wǎng)站的分類排名、論壇貼吧內容的分塊解析、基于API與爬蟲技術相結合的微博模擬登錄與采集等方法,方便將系統(tǒng)應用到新聞、貼吧、論壇、微博等不同的社交媒體平臺,以實現(xiàn)自動化、大規(guī)模的多源情報數(shù)據(jù)采集與解析,解決互聯(lián)網(wǎng)情報采集中的難題。

    猜你喜歡
    帖子列表情報
    巧用列表來推理
    情報
    情報
    情報
    學習運用列表法
    擴列吧
    暴力老媽
    交接情報
    不含3-圈的1-平面圖的列表邊染色與列表全染色
    情事圈點
    女性天地(2012年11期)2012-04-29 00:44:03
    岫岩| 阳高县| 方山县| 榕江县| 朝阳市| 荥阳市| 方城县| 桂阳县| 增城市| 上思县| 清新县| 高州市| 芦溪县| 九寨沟县| 大关县| 瓮安县| 潮安县| 新民市| 南开区| 敦煌市| 永顺县| 启东市| 通道| 井研县| 连江县| 威宁| 南丹县| 西乌珠穆沁旗| 湖北省| 永吉县| 聂拉木县| 昆山市| 景德镇市| 多伦县| 大邑县| 运城市| 公安县| 卢龙县| 胶州市| 大姚县| 宣化县|