一種自定義職責鏈及后置處理模塊的分布式爬蟲框架的制作方法
【技術領域】
[0001]本發明屬于互聯網廣告技術領域,特別涉及一種通過開放接口,整合多類爬蟲規則的自定義職責鏈及后置處理模塊的分布式爬蟲框架。
【背景技術】
[0002]近年來,隨著互聯網網站、受眾、媒介越來越多,互聯網數據呈指數級增長。因此,獲取網站資源、整合行業數據顯得尤為重要。通過爬蟲方法獲取網絡資源,也成為了一種必要的手段。
[0003]爬蟲技術從類別上可分為通用的爬蟲和垂直爬蟲技術。通用的爬蟲技術以獲取互聯網所有的數據為目標,通過鏈接的方式逐層遞進,體系龐大,業務單一。而垂直爬蟲技術,則是以獲取指定行業、指定網站、指定類別為基礎的,通過規則建立網站遍歷樹,最終提取頁面上對應的結構化數據。
[0004]相對于通用的爬蟲技術,垂直爬蟲技術的特點是:定位清晰、具有篩選過濾、業務規則復雜等特點。業內通常的做法是,構建不同的爬蟲服務。常見的有:圖片或資源下載,構建新聞內的正文抽取,構建比價類的電商、汽車、旅游等各類爬蟲。對此,同一公司為了應對各種業務需要,需要同時使用多套爬蟲系統,故存在如下缺陷:(I)通用性不強,每上線一套新的業務,就必須開發一套新的爬蟲系統,操作復雜,適用性差;(2)管理復雜,多套爬蟲系統同時運行,對軟件、硬件的要求高,并且管理成本無形增加。
[0005]因此,互聯網廣告技術領域急需一種自定義職責鏈及后置處理模塊的分布式爬蟲框架,是在一個系統中定義多個職責鏈,每個職責鏈對應一個任務名稱,即克服了現有技術中每個任務名稱就要對應一套爬蟲系統的限制,通用性更強,降低了內存的占用,對軟硬件的要求降低,降低了運行和管理成本。
【發明內容】
[0006]本發明提供了一種自定義職責鏈及后置處理模塊的分布式爬蟲框架,技術方案如下:
[0007]—種自定義職責鏈及后置處理模塊的分布式爬蟲框架,包括如下步驟:
[0008]第一步,創建各種不同類型的任務,每一個任務對應一個不同的任務名稱;
[0009]第二步,定義職責鏈的接口模塊,框架能自適應地處理各個接口模塊,每一接口模塊的輸出都與下一接口模塊的輸入相對應;
[0010]第三步,定義后置處理類,后置處理類根據不同的任務名稱,處理第一步中已抓取的ur I對應的內容;
[0011 ] 對于第一步中已抓取的url,經過職責鏈處理后,會產生多條數據,后置處理類是針對處理后的多條數據的自定義處理方法;
[0012]第四步,采用多機器、多進程從第四步的隊列中抓取多個url,根據任務名稱,推送多個不同的url至隊列中待用,當任務名稱不存在時,則重復該第一步至第三步創建新的任務;
[0013]第五步,根據任務名稱,得到職責鏈,分別處理職責鏈;
[0014]第六步,完成多個url的抓取后,根據任務名稱,得到后置處理類,執行后置處理類,將已抓取的url進行保存文件或其它處理。
[0015]優選的,在上述一種自定義職責鏈及后置處理模塊的分布式爬蟲框架中,第一步中創建各種不同類型的任務,每一個任務對應一個不同的任務名稱的具體步驟為:為系統配置Ui,操作員在Ui上創建對應的任務,同時對每個任務進行配置和賦予任務名稱,包括:定義職責鏈和后置處理類。
[0016]優選的,在上述一種自定義職責鏈及后置處理模塊的分布式爬蟲框架中,第二步中定義職責鏈的接口模塊,框架能自適應地處理各個接口模塊,每一接口模塊的輸出都與下一接口模塊的輸入相對應的具體步驟為:
[0017]首先通過爬蟲工具從網站上抓取url;
[0018]進一步地,根據任務名稱讀取職責鏈;
[0019]進一步地,職責鏈包括多個有序的接口模塊;每一接口模塊的輸出都與下一接口模塊的輸入相對應,框架根據多個接口模塊的順序依次抓取內容。
[0020]優選的,在上述一種自定義職責鏈及后置處理模塊的分布式爬蟲框架中,接口模塊包括:網頁內容獲取模塊,分類、標題提取模塊,價格提取模塊,評論提取模塊,正文算法提取模塊和輸出json的格式模塊。
[0021 ]優選的,在上述一種自定義職責鏈及后置處理模塊的分布式爬蟲框架中,第二步中框架能自適應地處理各個接口模塊是指:如果當前模塊不夠,能夠擴展業務代碼新增模塊,使用框架的業務人員,可以自行實現接口,開發不同的應用。
[0022]優選的,在上述一種自定義職責鏈及后置處理模塊的分布式爬蟲框架中,第五步中抓取系統根據任務名稱,從隊列中讀取已推送的url,每次獲得指定數量的url;框架遍歷所有ur I,得到各個ur I后,執行職責鏈,最終得到與ur I數量相一致的數據。
[0023]本發明的有益效果:
[0024]本發明的一種自定義職責鏈及后置處理模塊的分布式爬蟲框架,是在一個系統中定義多個職責鏈,每個職責鏈對應一個任務名稱,即克服了現有技術中每個任務名稱就要對應一套爬蟲系統的限制,通用性更強,降低了內存的占用,對軟硬件的要求降低,降低了運行和管理成本。
【附圖說明】
[0025]下面結合附圖和【具體實施方式】來詳細說明本發明:
[0026]圖1是一種自定義職責鏈及后置處理模塊的分布式爬蟲框架的流程圖。
【具體實施方式】
[0027]為了使本發明技術實現的措施、創作特征、達成目的與功效易于明白了解,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0028]實施例1:
[0029]第一步,創建各種不同類型的任務,每一個任務對應一個不同的任務名稱;
[0030]第二步,定義職責鏈的接口模塊,框架能自適應地處理各個接口模塊,每一接口模塊的輸出都與下一接口模塊的輸入相對應;
[0031 ]第三步,定義后置處理類,后置處理類根據不同的任務名稱,處理第一步中已抓取的url對應的內容;
[0032]對于第一步中已抓取的url,經過職責鏈處理后,會產生多條數據,后置處理類是針對處理后的多條數據的自定義處理方法;
[0033]第四步,采用多機器、多進程從第四步的隊列中抓取多個url,根據任務名稱,推送多個不同的url至隊列中待用,當任務名稱不存在時,則重復該第一步至第三步創建新的任務;
[0034]第五步,根據任務名稱,得到職責鏈,分別處理職責鏈;
[0035]第六步,完成多個url的抓取后,根據任務名稱,得到后置處理類,執行后置處理類,將已抓取的url進行保存文件或其它處理。
[0036]實施例2:
[0037]圖1是一種自定義職責鏈及后置處理模塊的分布式爬蟲框架的流程圖。
[0038]如圖1所示,一種自定義職責鏈及后置處理模塊的分布式爬蟲框架,包括如下步驟:
[0039]第一步,創建各種不同類型的任務,每一個任務對應一個不同的任務名稱;如“京東商品爬蟲”、“汽車圖片下載”、“新聞提取”等多個任務;
[0040]為系統配置Ui,操作員在Ui上創建對應的任務,同時對每個任務進行配置和賦予任務名稱,包括:定義職責鏈和后置處理類;
[0041]第二步,定義職責鏈的接口模塊,框架能自適應地處理各個接口模塊,每一接口模塊的輸出都與下一接口模塊的輸入相對應;
[0042]首先通過爬蟲工具從網站上抓取url;
[0043]進一步地,根據任務名稱讀取職責鏈;
[0044]進一步地,職責鏈包括多個有序的接口模塊;每一接口模塊的輸出都與下一接口模塊的輸入相對應,框架根據多個接口模塊的順序依次抓取內容;比如:“京東商品抓取”,可由“抓取html模塊”、“京東結構化抓取模塊”兩部分組成,上一模塊的輸出會作為下一模塊的輸入。在“京東商品抓取”案例中,首先執行“抓取html模塊”,獲得輸入url的html代碼,進而執行“京東結構化抓取模塊”,從html代碼中,抽取出需要的內容,如“標題”、“價格”等內容。框架構默認包含一標準模塊,業務模塊可由業務方提供擴充;
[0045]第三步,定義后置處理類,后置處理類根據不同的任務名稱,處理第一步中已抓取的url對應的內容;如:保存文件、數據庫及推送隊列、接口等;
[0046]對于第一步中已抓取的url,經過職責鏈處理后,會產生多條數據,后置處理類是針對處理后的多條數據的自定義處理方法;通常可包含“json文件保存”、“數據庫保存”等后置處理。與職責鏈一致,后置處理類亦可采用業務擴展模式,由業務方提供擴展。
[0047]第四步,采用多機器、多進程從第四步的隊列中抓取多個url,根據任務名稱,推送多個不同的url至隊列中待用,當任務名稱不存在時,則重復該第一步