專利名稱:分布式爬蟲系統(tǒng)及其提取網頁數據的方法
技術領域:
本發(fā)明涉及計算機數據挖掘技術,特別是涉及一種分布式爬蟲系統(tǒng)及其提取網頁數據的方法。
背景技術:
搜索引擎作為網絡信息搜尋的工具,它以一定的策略在互聯(lián)網中搜集、發(fā)現信息, 對信息進行理解、提取、組織和處理,并為用戶提供檢索服務。1994年,爬蟲程序被應用到索引程序中,Yahoo、Google等相繼出現。但至今,功能再強大的搜索引擎都仍然存在信息丟失、更新率不高、精確率不高等問題。用戶需要更快、更準、更方便、更有效的查詢服務成為搜索引擎技術發(fā)展研究追求的目標。在這種情況下定向抓取相關網頁資源的主題爬蟲應運而生。主題爬蟲又稱為聚焦爬蟲,為自動下載網頁的程序,它根據既定的抓取目標,有選擇的訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。作為一種智能的Web爬蟲,它的基本工作過程與一般的爬蟲是相似的。與一般爬蟲不同的是,主題爬蟲并不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的用戶查詢準備數據資源。目前無論對于一般爬蟲還是主題爬蟲,大部分研究都是專注于爬蟲的搜索策略和相關度分析方面,在這些方面也已取得相當多的進展。而面對越來越龐大的網絡資源,提高爬蟲程序的速度已成為當前搜索領域的一個焦點問題,但現有的爬蟲程序顯然不能滿足高速爬取的需求。
發(fā)明內容
有鑒于此,本發(fā)明提出一種分布式爬蟲系統(tǒng)及其提取網頁數據的方法,以提高網頁爬取速度。本發(fā)明的目的及解決其技術問題是采用以下技術方案來實現的。依據本發(fā)明提出的一種分布式爬蟲系統(tǒng),包括爬蟲服務器、消息隊列服務器、至少一個下載端和統(tǒng)一資源定位符URL過濾器,其中,所述爬蟲服務器,用于發(fā)布未處理URL隊列,并對所述分布式爬蟲系統(tǒng)進行邏輯控制;所述消息隊列服務器,用于從所述爬蟲服務器接收URL隊列,并將所述 URL隊列向所述下載端發(fā)送;所述下載端,用于根據從所述消息隊列服務器中接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至所述爬蟲服務器;以及所述URL過濾器,用于對所述爬蟲服務器收到的網頁數據進行排重。本發(fā)明的目的及解決其技術問題還可采用以下技術措施進一步實現。前述的分布式爬蟲系統(tǒng),所述消息隊列服務器向所述下載端下達URL隊列或根據所述下載端的請求向其提供URL隊列。前述的分布式爬蟲系統(tǒng),還包括本地文件子系統(tǒng),用于存儲所述爬蟲服務器收到的所述網頁數據。前述的分布式爬蟲系統(tǒng),還包括分布式文件子系統(tǒng),用于同步所述本地文件子系
3統(tǒng)中的網頁數據。 前述的分布式爬蟲系統(tǒng),所述URL過濾器為基于二進制數組bitSet的過濾器。前述的分布式爬蟲系統(tǒng),還包括監(jiān)控端,用于監(jiān)控和管理所述爬蟲服務器。本發(fā)明的目的及解決其技術問題另外還采用以下技術方案來實現。依據本發(fā)明提出的一種提取網頁數據的方法,其基于前述的系統(tǒng),包括以下步驟S1.爬蟲服務器發(fā)布未處理URL隊列;S2.所述消息隊列服務器接收所述URL隊列并將其發(fā)送到至少一個下載端; S3.所述下載端根據接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至所述爬蟲服務器;以及S4.對所述爬蟲服務器收到的網頁數據進行排重。本發(fā)明的目的及解決其技術問題還可采用以下技術措施進一步實現。前述的提取網頁數據的方法,所述步驟Sl中,爬蟲服務器發(fā)布的未處理URL隊列包括種子URL隊列;所述步驟S3中,所述下載端下載的網頁數據包括種子URL對應頁面上的超鏈接URL。前述的提取網頁數據的方法,步驟S4具體為S411.爬蟲服務器從超鏈接URL中取出一條URL數據;S412.爬蟲服務器判斷該URL數據是否與其最近最少使用LRU緩存中的數據一致,若不一致,則執(zhí)行步驟S413,若一致,則拋棄該URL數據并執(zhí)行步驟S411 ;S413. URL過濾器對所述URL數據進行排重,若排重未命中,則執(zhí)行步驟S51,若排重命中,則拋棄該URL數據并執(zhí)行步驟S411 ;步驟S4之后包括步驟S51 將排重通過的URL數據放入所述爬蟲服務器的未處理URL隊列中并執(zhí)行步驟S411。由上述技術方案可知,本發(fā)明的實施例通過采用分布式爬蟲系統(tǒng),具有以下有益效果本發(fā)明的爬蟲服務器不需要知道下載端的實現,爬蟲服務器將任務發(fā)給消息隊列服務器,并等待任務結果的返回即可。邏輯控制和下載任務的分離,讓分布式爬蟲系統(tǒng)的啟動、管理、容錯都變的簡單許多。爬蟲服務器不需要知道有多少個下載端在下載,不需要去管理下載端,這使得整個結構非常容易擴展。在網絡環(huán)境允許的情況,如果想獲取更快的爬取速度,可以實時的增加一個下載端,而不需要更改原來的系統(tǒng),也不需要重新啟動原來的系統(tǒng),就可以讓系統(tǒng)擁有更強大的抓取能力,這樣就解決了在系統(tǒng)實時運行時想增加抓取能力的問題。通過以下參照附圖對優(yōu)選實施例的說明,本發(fā)明的上述以及其它目的、特征和優(yōu)點將更加明顯。
圖1為本發(fā)明分布式爬蟲系統(tǒng)一實施例的結構示意圖;圖2為基于本發(fā)明分布式爬蟲系統(tǒng)的提取網頁數據方法一實施例的流程圖;圖3為本發(fā)明提取網頁數據方法一具體實施例的流程圖。
具體實施例方式下面將詳細描述本發(fā)明的具體實施例。應當注意,這里描述的實施例只用于舉例說明,并不用于限制本發(fā)明。本發(fā)明將現有技術中的爬蟲程序以分布式爬蟲系統(tǒng)來實現,總的來說,該分布式
4爬蟲系統(tǒng)中的爬蟲服務器實現整個系統(tǒng)的邏輯控制,系統(tǒng)中的至少一個下載端進行具體的任務處理,利用這種爬蟲服務器和下載端分離的架構來構成分布式爬蟲系統(tǒng)。請參閱圖1所示,其為本發(fā)明提出的分布式爬蟲系統(tǒng)1 一實施例的結構示意圖,分布式爬蟲系統(tǒng)1包括爬蟲服務器11、消息隊列服務器12、至少一個下載端13以及 URL (Uniform Resource Locator,統(tǒng)一資源定位符)過濾器 14。爬蟲服務器11是整個系統(tǒng)的核心部分,用于發(fā)布未處理URL隊列,并對該分布式爬蟲系統(tǒng)1的其余各部分進行邏輯控制。其控制分布式爬蟲系統(tǒng)1爬蟲策略的實現,實現爬蟲的主要邏輯,并協(xié)同、調度系統(tǒng)其他部分以完成爬蟲的流程。具體地,爬蟲服務器11內可存儲未處理URL隊列、處理中的URL隊列以及已處理 URL隊列,能夠實現發(fā)布未處理URL隊列、接收返回的已處理的URL隊列,并可提供有系統(tǒng)管
理界面。消息隊列服務器12,其作為爬蟲服務器11和下載端13之間的中轉站,用于從爬蟲服務器11接收URL隊列,以便于下載端13獲取。下載端13用于根據從消息隊列服務器12中接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至爬蟲服務器11。具體地說,消息隊列服務器12可主動向下載端13下達需抓取的URL隊列;也可以在收到下載端13的請求后,向發(fā)請求的下載端13提供URL隊列。需要說明的是,下載端13可使用現有技術中的網頁抓取方式,本發(fā)明不就抓取的具體細節(jié)加以說明,僅就發(fā)明對現有技術的改進之處加以描述。URL過濾器14,用于對爬蟲服務器11收到的網頁數據進行排重。由于hternet上的網頁中重復的URL很多,沒有排重,爬蟲就會永無休止的重復抓取。排重服務確保每個URL任務只被執(zhí)行一次。URL過濾器14可為現有技術中的過濾器,但由于對網頁排重的需要,現有技術中的過濾器都需要對過濾內容進行存儲,以判斷是否需要過濾。每次過濾判斷需要去查找是否內容已經存在然后做出判斷,如果沒有存在需要再進行一次存儲操作。這些過濾器的缺點是查詢存儲操作執(zhí)行速度較慢,需要額外的存儲空間。在本實施例中,優(yōu)選基于bitSet的過濾器?;赽itSet的過濾器的基本原理為由于過濾器只需要對待過濾的內容是否存在做出一個“是”或“非”的二值判斷,并不需要獲取內容,因此基于bitSet的過濾器并不將數據存儲。基于bitSet的過濾器是將數據通過一定的哈希方法映射成一個二進制數組bitSet中的幾個點,這樣,待過濾的內容經由該哈希算法映射成二進制數組bitSet中的幾個點后,若發(fā)現相同的位置已經被置位, 則說明該內容已經存在,便可將該內容過濾掉。采用本實施例的分布式爬蟲系統(tǒng),爬蟲服務器11不需要知道下載端13的實現,爬蟲服務器11將任務發(fā)給消息隊列服務器12,并等待任務結果的返回即可。邏輯控制和下載任務的分離,讓分布式爬蟲系統(tǒng)1的啟動、管理、容錯都變的簡單許多。此外,爬蟲服務器11不需要知道有多少個下載端在下載,不需要去管理下載端, 這使得整個結構非常容易擴展。在網絡環(huán)境允許的情況,如果想獲取更快的爬取速度,可以實時的增加一個下載端,而不需要更改原來的系統(tǒng),也不需要重新啟動原來的系統(tǒng),就可以讓系統(tǒng)擁有更強大的抓取能力,這樣就解決了在系統(tǒng)實時運行時想提高抓取能力的問題。
爬蟲服務器11收到下載端13發(fā)送的網頁數據后,可將其存儲在本地文件子系統(tǒng) 16中,該本地文件子系統(tǒng)可為單獨的計算機,但由于互聯(lián)網的網頁數據相當龐大,單機的本地文件子系統(tǒng)16有時并不能滿足這樣龐大的存儲需求,因此,可進一步將本地文件子系統(tǒng) 16中網頁數據同步到基于客戶機/服務器模式的分布式文件子系統(tǒng)17中,以確保所有的網頁數據都能有效的存儲。分布式爬蟲系統(tǒng)1還可包括監(jiān)控端15,其用于監(jiān)控和管理爬蟲服務器11的狀態(tài), 以保證系統(tǒng)的正常運行。在現有的爬蟲程序中,監(jiān)控端并不單獨存在。本發(fā)明將監(jiān)控端15與爬蟲服務器11 分離,能夠減少系統(tǒng)的耦合性。監(jiān)控的功能分離出來之后,一是降低爬蟲服務器11的復雜性,二是可以在分布式爬蟲系統(tǒng)1運行的同時修改監(jiān)控端15以達到特定的控制管理目的。本領域及技術人員可以理解,本實施例中提出的分布式爬蟲系統(tǒng)可作為一般爬蟲系統(tǒng),也可作為主題爬蟲系統(tǒng)。本發(fā)明還提出了一種提取網頁數據的方法,該方法基于上述分布式爬蟲系統(tǒng),請參閱圖2所示,本方法包括以下步驟Sl 爬蟲服務器發(fā)布未處理URL隊列;S2 消息隊列服務器接收URL隊列并將其發(fā)送到至少一個下載端;S3 下載端根據接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至爬蟲服務器;S4 對所述爬蟲服務器收到的網頁數據進行排重。上述步驟的具體實現,可采用與上述分布式爬蟲系統(tǒng)實施例中相同的實施方式, 在此不再贅述。請參閱圖3所示,其為本發(fā)明提取網頁數據的方法一具體實施例的示意圖,本實施例是將本發(fā)明的分布式爬蟲系統(tǒng)作為主題爬蟲系統(tǒng)的應用,具體包括以下步驟Sll 爬蟲服務器發(fā)布種子URL隊列;具體地,爬蟲服務器將種子URL放入未處理URL隊列中,以向消息隊列服務器發(fā)布。S21 消息隊列服務器從服務器的未處理URL隊列中接收URL隊列,并將其發(fā)送到至少一個下載端;這時,爬蟲服務器會將消息隊列服務器接收的URL隊列標記為處理中。S31 下載端根據接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至所述爬蟲服務器,該網頁數據中包括種子URL對應頁面上的超鏈接URL ;爬蟲服務器會根據收到的網頁數據,將相應的URL隊列標記為已處理。本領域技術人員知道,主題爬蟲的爬行過程可以看作是一個有選擇性的遍歷Web 圖的過程,它從一組種子URL出發(fā),沿著Web頁面上的超鏈接不斷爬行并下載網頁。由于本發(fā)明中的下載端執(zhí)行爬行并下載網頁的功能,因此其下載的網頁數據中可能會包括有種子URL對應頁面上的超鏈接URL,若存在有超鏈接URL,則這些超鏈接的URL 置于URLList (URL列表)中,這樣,網頁數據中的超鏈接的URL實際上是以URLList的形式返回至爬蟲服務器。S41 對所述爬蟲服務器收到的網頁數據進行排重;
在本實施例中,主要針對URLList中的數據進行排重,以避免超鏈接URL重復。對URLList中的數據進行排重的具體過程可包括S411 爬蟲服務器從超鏈接URL中取出一條URL數據;S412 爬蟲服務器判斷該URL數據是否與其LRU (least recently used,最近最少使用)緩存中的數據一致,若不一致,則執(zhí)行步驟S413,若一致,則拋棄該URL數據并執(zhí)行步驟 S411 ;這里,LRU緩存設于服務器的內存中,如果該URL數據與LRU緩存中的數據一致, 說明最近下載過該URL數據,則拋棄該URL數據,并執(zhí)行步驟S411來重新取出一條URL數據。S413 =URL過濾器對該URL數據進行排重,若排重未命中,則執(zhí)行步驟S51,若排重命中,則拋棄該URL數據并執(zhí)行步驟S411 ;URL過濾器對URL數據的排重可采用與前述分布式爬蟲系統(tǒng)實施例中相同的實施方式,在此不再贅述。S51 將排重通過的URL數據放入爬蟲服務器的未處理URL隊列中,以進行基于此 URL的網頁抓取,并執(zhí)行步驟S411來提取下一條URL數據。雖然已參照幾個典型實施例描述了本發(fā)明,但應當理解,所用的術語是說明和示例性、而非限制性的術語。由于本發(fā)明能夠以多種形式具體實施而不脫離發(fā)明的精神或實質,所以應當理解,上述實施例不限于任何前述的細節(jié),而應在隨附權利要求所限定的精神和范圍內廣泛地解釋,因此落入權利要求或其等效范圍內的全部變化和改型都應為隨附權利要求所涵蓋。
權利要求
1.一種分布式爬蟲系統(tǒng),其特征在于,包括爬蟲服務器、消息隊列服務器、至少一個下載端和統(tǒng)一資源定位符URL過濾器,其中,所述爬蟲服務器,用于發(fā)布未處理URL隊列,并對所述分布式爬蟲系統(tǒng)進行邏輯控制; 所述消息隊列服務器,用于從所述爬蟲服務器接收URL隊列,并將所述URL隊列向所述下載端發(fā)送;所述下載端,用于根據從所述消息隊列服務器中接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至所述爬蟲服務器;以及所述URL過濾器,用于對所述爬蟲服務器收到的網頁數據進行排重。
2.根據權利要求1所述的分布式爬蟲系統(tǒng),其特征在于,所述消息隊列服務器向所述下載端下達URL隊列或根據所述下載端的請求向其提供URL隊列。
3.根據權利要求1所述的分布式爬蟲系統(tǒng),其特征在于,還包括本地文件子系統(tǒng),用于存儲所述爬蟲服務器收到的所述網頁數據。
4.根據權利要求3所述的分布式爬蟲系統(tǒng),其特征在于,還包括分布式文件子系統(tǒng),用于同步所述本地文件子系統(tǒng)中的網頁數據。
5.根據權利要求1所述的分布式爬蟲系統(tǒng),其特征在于,還包括監(jiān)控端,用于監(jiān)控和管理所述爬蟲服務器。
6.根據權利要求1-5中任一項權利要求所述的分布式爬蟲系統(tǒng),其特征在于,所述URL 過濾器為基于二進制數組bitSet的過濾器。
7.一種提取網頁數據的方法,其特征在于,其基于權利要求1所述的系統(tǒng),包括以下步驟S1.爬蟲服務器發(fā)布未處理URL隊列;S2.所述消息隊列服務器接收URL隊列并將其發(fā)送到至少一個下載端;S3.所述下載端根據接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至所述爬蟲服務器;以及S4.對所述爬蟲服務器收到的網頁數據進行排重。
8.根據權利要求7所述的提取網頁數據的方法,其特征在于,所述步驟Sl中,爬蟲服務器發(fā)布的未處理URL隊列包括種子URL隊列; 所述步驟S3中,所述下載端下載的網頁數據包括種子URL對應頁面上的超鏈接URL。
9.根據權利要求8所述的提取網頁數據的方法,其特征在于,步驟S4具體為S411.爬蟲服務器從超鏈接URL中取出一條URL數據;S412.爬蟲服務器判斷該URL數據是否與其最近最少使用LRU緩存中的數據一致,若不一致,則執(zhí)行步驟S413,若一致,則拋棄該URL數據并執(zhí)行步驟S411 ;S413.URL過濾器對所述URL數據進行排重,若排重未命中,則執(zhí)行步驟S51,若排重命中,則拋棄該URL數據并執(zhí)行步驟S411 ;步驟S4之后包括步驟S51 將排重通過的URL數據放入所述爬蟲服務器的未處理URL隊列中并執(zhí)行步驟S411。
全文摘要
本發(fā)明公開了一種分布式爬蟲系統(tǒng)及其提取網頁數據的方法,該系統(tǒng)包括爬蟲服務器,用于發(fā)布未處理URL隊列,并對所述分布式爬蟲系統(tǒng)進行邏輯控制;消息隊列服務器,用于從所述爬蟲服務器接收URL隊列,并將所述URL隊列向所述下載端發(fā)送;至少一個下載端,用于根據從所述消息隊列服務器中接收的URL隊列下載網頁,并將下載的網頁數據發(fā)送至所述爬蟲服務器;URL過濾器,用于對所述爬蟲服務器收到的網頁數據進行排重。本發(fā)明的爬蟲服務器不需要知道下載端的實現,爬蟲服務器將任務發(fā)給消息隊列服務器,并等待任務結果的返回即可,邏輯控制和下載任務的分離,讓分布式爬蟲系統(tǒng)的啟動、管理、容錯都變的簡單許多。
文檔編號G06F17/30GK102314463SQ20101022467
公開日2012年1月11日 申請日期2010年7月7日 優(yōu)先權日2010年7月7日
發(fā)明者賈海祿 申請人:北京瑞信在線系統(tǒng)技術有限公司