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

基于主題的多線程網絡爬蟲系統的研究

2020-08-15 13:30:21宋婷婷
現代信息科技 2020年7期

摘? 要:網絡爬蟲是當前較流行的網絡搜索引擎工具,其設計需要不斷優化,研究也需要不斷深入。主題網絡爬蟲抓取目標明確、抓取結果的結構性較好,更便于進行分析。該文報告了網絡爬蟲技術的現狀,從主題網絡爬蟲的基本結構入手,對當前主題網絡爬蟲主流系統的系統功能架構和主要功能模塊進行了研究,并分析了當前主流系統的多線程管理模式,特別對基于Java開源框架的爬蟲系統的多線程進行分析,為網絡爬蟲性能的提高提出更進一步的方法。

關鍵詞:多線程;主題;網絡爬蟲

中圖分類號:TP391.3? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)07-0083-04

Research on Multi-threaded Web Crawler System Based on Theme

SONG Tingting

(Minjiang University,Fuzhou? 350108,China)

Abstract:Web crawlers are currently popular web search engine tools,and their design needs to be constantly optimized,and research needs to be constantly deepened. Topic crawlers have clear crawling targets and better structure of crawling results,which is easier to analyze. This article reports on the current status of web crawler technology. Starting from the basic structure of the theme web crawler,the system functional architecture and main functional modules of the current mainstream system of the theme web crawler are studied,and the multi-thread management mode of the current mainstream system is analyzed. In particular,the multithreading of the crawler system based on the Java open source framework is analyzed,and a further method for improving the performance of the web crawler is proposed.

Keywords:multi-thread;theme;web crawler

0? 引? 言

隨著全球信息化的飛速發展,如何有效抓取并利用互聯網上海量數據中的有用信息成了重大挑戰。傳統的網絡爬蟲受制于帶寬、系統資源等多方面條件,在某限定時間內下載數據有限、下載目標數據不夠明確,已經難以滿足用戶的需求,主題網絡爬蟲應運而生。

主題網絡爬蟲雖在國內起步晚,但發展迅速,已經成為當前搜索引擎和網頁信息挖掘中的一個研究熱點。主題網絡爬蟲通過對整個網頁按主題分塊采集,再將不同塊的采集結果重新整合到一起,得以提高整個網頁的采集覆蓋率和頁面利用率。

本文是基于閩江學院的福建省教育廳中青年教師教育科研項目“基于多線程的主題網絡爬蟲的算法分析與性能優化”的研究成果。筆者作為項目的申請人和主持人,將從以下幾個方面進行闡述。

1? 主題網絡爬蟲的基本構成

主題網絡爬蟲是從一個網站的某個頁面(通常是網站主頁)開始,然后有選擇地訪問互聯網的網頁,獲取信息。主題爬蟲不追求網絡覆蓋率,其關注點在于與某一主題相關的內容。主題爬蟲是有目的、有選擇地在網絡中爬行,為面向該主題的用戶提供數據。主題爬蟲在抓取頁面時,需要對頁面進行主題相關性分析、過濾,保留與主題相關的鏈接,將有效網址加入準備進行網頁爬取的隊列中,然后根據確定采用的算法策略從未爬取的隊列中選擇下一個設定的URL進行爬取,直到設定的策略執行完結束爬取。

主題網絡爬蟲的基本思想是通過機器學習的方式預先建立主題模型,在爬取過程中使用主題模型來判斷當前頁面和待抓取的下一條URL的主題相關度,保證盡可能少地采集與主題無關的頁面,保留與主題相關的網頁。主題爬蟲與通用爬蟲的主要區別就在于增加了判斷網頁內容是否與主題相關的主題判斷模塊和不同的網頁搜索策略。

2? 面向主題的多線程網絡爬蟲系統介紹

2.1? 系統的功能架構

如圖1所示,面向主題的多線程網絡爬蟲系統主要分為兩大功能架構組:網頁抓取模塊組、前端展示模塊組。主題爬蟲系統的功能主要體現在網頁抓取模塊組,該模塊組內含頁面采集、頁面分析、頁面主題相關度評價、URL管理、爬行控制和線程池六大模塊。

為了獲取關聯度較高的頁面鏈接,通常使用URL關聯模塊和主題相關度評價模塊,先通過頁面采集模塊把關聯頁面下載下來,這種方式可以盡可能地避免下載無關頁面,節省爬取時間,減少資源消耗,提高系統性能。網頁抓取模塊組的結構示意圖如圖2所示。

2.2? 系統功能模塊

(1)爬行控制模塊。該模塊是整個系統的核心,協調調度其他模塊的運行。通過該模塊可以調用線程池模塊,將多線程應用于網頁爬取,通過URL管理模塊解析URL,找出滿足相關度要求的鏈接并將其加入待爬取的隊列中,拋棄無法滿足相關度要求的鏈接。圖3顯示了該模塊與其他模塊之間的調度關系。

(2)頁面采集模塊。頁面采集模塊的主要任務是在爬取隊列中下載相關網頁,即通過HTTP協議將服務器端與URL對應的頁面下載。其原理是首先在主程序設置一個初始的URL地址,獲取其頁面所包含的所有鏈接地址,建立待爬取隊列。判斷該隊列在非空的情況下哪些URL已被爬取,同時下載未被爬取的URL頁面,忽略已抓取的頁面,直到隊列清空。

(3)URL管理模塊。URL管理模塊的任務是初始化待抓取隊列,并對頁面內容進行去重處理。如果URL未被抓取就調用相關函數進行下載,如果已被抓取則略過。循環執行上述步驟直到待抓取隊列為空。URL管理模塊的另一個功能就是給URL隊列進行排序,保證相關度高的URL能夠優先被抓取。

(4)頁面分析模塊。該模塊主要任務是設置分析規則,對下載的頁面的源碼按照規則進行解析,實現網頁文本內容的提取。

(5)頁面主題相關度評價模塊。該模塊的主要任務是網頁的主題相關度計算。需要預先設置主題關鍵字及其邊界,再導入頁面分析模塊提取出來的文本內容,匹配相應算法計算文本內容的相似度,然后把文本內容符合主題要求的頁面寫到系統數據庫中,不符合的則丟棄。

(6)線程池模塊。該模塊是本文重點研究的對象,其主要任務是管理多線程,提高爬取性能。

3? 系統的多線程管理

3.1? 多線程網絡爬蟲

網絡爬蟲如果僅僅使用一個線程,那么需要花費很多時間等待DNS服務器的響應,另外發送到服務器端的請求以及接收從服務器端返回的網頁數據都需要耗費大量時間,但是等待的過程CPU卻總是空閑,嚴重浪費了系統資源。單線程網絡爬蟲已經被多線程模式所取代,以提升CPU利用效率,減少等待時間。

利用多線程一次可以爬取多個網頁,為避免多線程網絡爬蟲系統占用過多服務器資源,需要使用禮貌策略,所謂禮貌策略就是讓服務器的多數時間用于處理實際用戶的請求,而爬蟲工作會在處理請求的間隙執行。執行多個爬取任務通常需要在各個任務間相互協調和通信。所以多線程的程序復雜度要遠遠比單線程高。

多線程技術的使用提升了爬蟲效率,但是系統資源也將因頻繁地創建和銷毀線程對象而消耗。因此為解決這個問題,使用線程池技術,即線程池中存在可隨時被喚醒的線程以降低創建線程時的資源消耗,可以改善因多線程的頻繁創建而引發的系統效率降低的問題。

3.2? 線程池的原理

線程池是根據任務需求創建或銷毀線程對象的,線程池通常會創建一批線程,這批線程為空閑等待狀態。當一個請求進入系統,線程池馬上調度一個空閑狀態的線程進行處理。但是如果長時間沒有任務請求,線程池內的線程一直空閑等待,線程池中設定的策略會主動把這些沒有被調用的線程銷毀,從而達到降低系統資源開銷的目的。反之如果線程池中的線程一直處于運行狀態,那么線程池又會創建更多線程等待處理新任務。線程池工作模式如圖4所示。

線程池對提高效率作用很大,使用線程池的優點如下:

(1)線程池技術可以根據實際情況實時調整線程的數量,使效率大大提高,在實際使用線程池的過程中要注意:需要綜合考慮來設置合適的線程數量,線程數并不是越多越好;需要考慮多線程并發可能導致的各種錯誤,避免死鎖的產生。

(2)線程池中的每個線程都可以復用,將創建和銷毀線程時導致的對系統資源過多的占用影響降至最低。

基于以上分析,所以在做相關主題爬蟲設計的時候,為提高爬蟲的性能和系統資源使用率,盡量要考慮使用線程池來管理多線程。

3.3? 爬蟲多線程工作流程

爬蟲多線程工作流程如圖5所示。多線程爬蟲的工作流程如下:

(1)將線程數初始設定為0;

(2)在配置文件中確定線程數量的最大值。然后程序判斷線程數是否達到該值。若達到則線程被線程池收回,結束該流程。否則繼續下一步;

(3)線程從待抓取的URL隊列中取出一個URL地址,作為頁面下載入口。如果待抓取隊列為空,該線程就終止,否則線程計數器就加1;

(4)系統發送HTTP異步請求,當前線程繼續執行爬取任務,然后返回第2步判斷線程數,是否繼續獲取新的URL下載。同時分配新線程,等待HTTP響應;

(5)線程接收到響應數據后,對頁面數據進行分析處理,把新的URL放入待抓取隊列中,線程數減1,一個爬取任務完成。

4? 基于Java的爬蟲系統的多線程設計

4.1? Java多線程爬蟲框架——Crawler4j

一個系統程序代表了一個進程,進程占用CPU資源運行。一個進程可以包含多個線程,線程是資源調度的基本單位,執行一段程序的實質就是在多個線程之間進行切換,程序的不同部分由不同的線程執行。因此當線程池中某個線程在等待HTTP做出響應時,其他線程就進入CPU執行,避免資源的浪費。

Java語言對多線程提供了很好的支持,Java的開源性決定了在眾多領域都有不同的Java開源框架。Crawler4j是一個開源的Java網絡爬蟲框架,提供一個用于抓取Web頁面的簡單接口,可以利用這個接口實現一個多線程的Web爬蟲。使用這個框架,可以非常簡單地在Crawler4j所提供的接口基礎上進行擴展,從而實現爬蟲功能。同時這個開源框架還提供了線程實時監控功能,以便查看線程的運行情況和數據爬取情況。因此使用Crawler4j框架接口實現多線程的、可自定義網頁抽取規則和解析規則的主題網絡爬蟲系統。

Crawler4j框架包含有三大組件,分別是Frontier、Fetcher、Parser。Frontier組件是該框架的核心,包含URL處理隊列接口,提供鏈接處理及其后續工作;Fetcher組件提供了獲取URL指定頁面內容的接口;Parser組件提供了種子提取的接口并將其放入URL隊列中。Crawler4j框架還提供了CrawlerController線程控制器實現爬蟲線程的控制,當然還包含其他一些組件。

在實際開發過程中,只需要對Crawler4j框架中的頁面解析方式和URL的訪問規則進行修改,使其能夠按照用戶的配置進行網頁抓取。系統采用多線程控制Crawler4j的線程控制器,能夠通過用戶的配置信息,創建不同的爬蟲任務。系統為用戶提供任務控制接口,用戶可以通過界面控制爬蟲任務的運行情況。

主題爬蟲系統支持多任務同時爬取,在爬行控制模塊中設置任務控制器,管理爬取任務隊列,每個任務都可以自行設定配置參數和種子鏈接,按配置參數由CrawlerController控制器進行調度來爬取相關數據。Crawler4j框架主要由三個類實現多線程管理,分別是任務管理類(TaskController)、活動任務類(AliveTask)、活動任務隊列類(AliveTaskQueue)。

4.2? 爬蟲線程的工作流程設計

當線程接收到URL待爬取隊列中的鏈接地址后,通過DNS解析鏈接地址,獲取頁面信息,然后利用框架的HTMLParser類對頁面信息進行解析,提取出頁面文本內容、鏈接信息等,然后通過頁面分析模塊和相關度評價模塊進行處理,判斷分析后的文本內容是否與主題相關,若頁面內容與用戶設定主題相關,則過濾該頁面中的URL,將有效的URL加入隊列,繼續抓取下一條URL,同時將當前頁面交由另外的文本處理線程對當前文本進行后續處理,生成文本內容摘要,結合內容特征向量和摘要特征向量生成內容語義信息和摘要語義信息,將語義信息和網頁信息保存至數據庫中,同時建立該頁面的全文索引。

5? 結? 論

本文詳細介紹了基于主題的多線程網絡爬蟲系統中的主要功能模塊,并詳細介紹了系統的多線程管理方式、原理和工作流程,并通過對Java開源框架——Crawler4j的介紹和使用,實現了爬蟲線程的工作流程的設計。

參考文獻:

[1] 葛玲.基于查詢擴展的主題爬蟲研究 [D].北京:北京工業大學,2009.

[2] 孫青云,王俊峰,趙宗渠,等.一種基于模擬登錄的微博數據采集方案 [J].計算機技術與發展,2014,24(3):6-10.

[3] 陳睿嘉,康志忠,張衛濤.基于網絡爬蟲的導航深度服務信息自動采集 [J].測繪工程,2015,24(1):17-24.

[4] 段兵營.捜索引擎中網絡爬蟲的研究與實現 [D].西安:西安電子科技大學,2014.

[5] 王洪威.主題網絡爬蟲的分析與設計 [D].北京:北京郵電大學,2013.

[6] 陳千.主題網絡爬蟲關鍵技術的研究與應用 [D].北京:北京理工大學,2015.

[7] 柴嘉斌,李廣華,李長春.主題爬蟲搜索策略的研究 [J].科技信息,2011(12):234-235.

[8] 張曉雷.面向Web挖掘的主題網絡爬蟲的研究與實現 [D].西安:西安電子科技大學,2012.

作者簡介:宋婷婷(1980—),女,漢族,福建福州人,講師,碩士,研究方向:網絡爬蟲。

主站蜘蛛池模板: 久久亚洲精少妇毛片午夜无码| 99久久人妻精品免费二区| 精品欧美视频| 欧美一级专区免费大片| 国产精品视频3p| 亚洲区一区| 日韩精品无码一级毛片免费| 亚洲—日韩aV在线| 播五月综合| 一本一道波多野结衣av黑人在线| 色哟哟色院91精品网站| 爱爱影院18禁免费| 精品视频在线观看你懂的一区 | 久久综合亚洲色一区二区三区| 福利在线不卡一区| 欧美国产精品不卡在线观看| 3p叠罗汉国产精品久久| 无码免费的亚洲视频| 91福利免费| 久草青青在线视频| 国产精品太粉嫩高中在线观看| 99热国产这里只有精品9九| 欧美成人手机在线视频| 999国产精品永久免费视频精品久久| 亚洲第一天堂无码专区| 国产高清不卡视频| 亚洲精品无码av中文字幕| 久久人人妻人人爽人人卡片av| 国产精品99r8在线观看| 日日拍夜夜操| 免费毛片在线| 日韩精品无码不卡无码| 伊人蕉久影院| 伊人网址在线| 精品视频第一页| 多人乱p欧美在线观看| 精品一区国产精品| 成人国产精品一级毛片天堂| 91国内视频在线观看| 成年女人18毛片毛片免费| 91精品视频在线播放| 国产美女免费网站| 伊人色天堂| 免费一级毛片不卡在线播放| 中国精品自拍| 国产a在视频线精品视频下载| 日韩精品资源| 特黄日韩免费一区二区三区| 911亚洲精品| 欧美视频在线不卡| 国产成人一区免费观看| 亚洲中文在线看视频一区| 国产亚洲高清在线精品99| 欧美精品成人一区二区视频一| 天天综合网色中文字幕| 日韩a在线观看免费观看| 亚洲性网站| 国产毛片高清一级国语| 久久久国产精品无码专区| 波多野结衣无码AV在线| 日本精品一在线观看视频| 亚洲精品成人7777在线观看| 人妻丰满熟妇AV无码区| 亚洲中文制服丝袜欧美精品| 亚洲福利一区二区三区| 国产精品毛片一区视频播 | 亚洲国产欧美自拍| 国产午夜小视频| 亚洲第一黄片大全| 九色视频一区| 欧美福利在线播放| 欧美日韩中文字幕在线| 就去吻亚洲精品国产欧美| 免费人成黄页在线观看国产| 久久国产精品国产自线拍| 中文字幕在线视频免费| 国产97区一区二区三区无码| 黄网站欧美内射| 免费视频在线2021入口| 538精品在线观看| 国产96在线 | 欧美激情视频一区|