本發明涉及網絡通信技術領域,特別是涉及一種網站數據采集方法及裝置。
背景技術:
隨著網絡信息技術的高速發展,網絡信息數據時刻都在爆炸性地增長。對于各種資訊類網站,其咨詢信息實時更新,因此需要定期采集其它網站的數據內容來更新自己的內容。現有數據采集方法在采集數據前,程序員每次都需要根據不同的網站及不同的數據內容,編寫與欲采集數據對應的正則規則,增加了數據采集的工作量。
技術實現要素:
本發明實施例的目的在于提供一種網站數據采集方法及裝置,以解決現有數據采集方法在采集數據前每次都需編寫與欲采集數據對應的正則規則的問題。具體技術方案如下:
本發明實施例提供了一種網站數據采集方法,包括:
獲取欲采集網站的部分網頁數據,所述部分網頁數據至少包括:所述欲采集網站的圖片數據、文字數據、音頻數據和視頻數據;
通過所述部分網頁數據,判斷本地數據庫中是否存儲有與所述部分網頁數據對應的采集規則;
如果有存儲,調取所述本地數據庫中的采集規則;
如果沒有存儲,根據所述部分網頁數據中的數據內容,生成與所述部分網頁數據對應的采集規則;
存儲所述采集規則至所述本地數據庫;
根據所述采集規則,生成數據采集腳本程序;
通過所述數據采集腳本程序,分布式采集所述欲采集網站的全部網頁數據。
優選地,所述分布式采集所述欲采集網站的全部網頁數據之后,所述數據采集方法還包括:
將采集到的所述全部網頁數據按照不同的數據類型,存入本地內容數據庫,所述不同的數據類型包括:圖片類型、文字類型、音頻類型和視頻類型。
優選地,所述通過所述部分網頁數據,判斷本地數據庫中是否存儲有與所述部分網頁數據相對應的采集規則,包括:
通過所述欲采集網站的圖片數據,得到所述圖片數據的信息,所述圖片數據的信息至少包括:所述圖片數據的格式類型、來源地址、圖片屬性及對應網頁的源代碼;
根據所述圖片數據的信息,在本地數據庫中查找與所述圖片數據的信息對應的采集規則;
通過所述欲采集網站的文字數據,得到所述文字數據的信息,所述文字數據的信息至少包括:所述文字數據的格式類型、來源地址及對應網頁的源代碼;
根據所述文字數據的信息,在本地數據庫中查找與所述文字數據的信息對應的采集規則;
通過所述欲采集網站的音頻數據,得到所述音頻數據的信息,所述音頻數據的信息至少包括:所述音頻數據的格式類型、來源地址及對應網頁的源代碼;
根據所述音頻數據的信息,在本地數據庫中查找與所述音頻數據的信息對應的采集規則;
通過所述欲采集網站的視頻數據,得到所述視頻數據的信息,所述視頻數據的信息至少包括:所述視頻數據的格式類型、來源地址及對應網頁的源代碼;
根據所述視頻數據的信息,在本地數據庫中查找與所述視頻數據的信息對應的采集規則。
優選地,所述根據所述部分網頁數據中的數據內容,生成與所述部分網頁數據對應的采集規則,包括:
根據所述部分網頁數據的數據內容中的采集屬性及內容類型,生成采集規則,所述采集規則與所述部分網頁數據對應;所述采集屬性包括:采集數據的類型,采集數據的時間,采集數據的數據量;所述內容類型包括:數據格式類型,數據時間類型,數據大小類型。
優選地,所述分布式采集所述欲采集網站的全部網頁數據,進一步包括:通過服務器集群采集所述欲采集網站的全部網頁數據,所述集群由多臺協同工作的采集服務器組成。
優選地,所述將采集到的所述全部網頁數據按照不同的數據類型,存入本地內容數據庫之后,所述網站數據采集方法還包括:
記錄所述采集腳本程序的運行狀態,生成運行狀態日志;
根據所述運行狀態日志,判斷欲采集網站狀態是否正常;
如果所述欲采集網站狀態正常,繼續采集;
如果所述欲采集網站狀態異常,終止采集。
本發明實施例還提供了一種網站數據采集裝置,包括:
獲取模塊,用于獲取欲采集網站的部分網頁數據,所述部分網頁數據至少包括:所述欲采集網站的圖片數據、文字數據、音頻數據和視頻數據;
第一判斷模塊,用于通過所述部分網頁數據,判斷本地數據庫中是否存儲有與所述部分網頁數據對應的采集規則;
調取模塊,用于如果有存儲,調取所述本地數據庫中的采集規則;
第一生成模塊,用于如果沒有存儲,根據所述部分網頁數據中的數據內容,生成與所述部分網頁數據對應的采集規則;
第一存儲模塊,用于存儲所述采集規則至所述本地數據庫;
第二生成模塊,用于根據所述采集規則,生成數據采集腳本程序;
采集模塊,用于通過所述數據采集腳本程序,分布式采集所述欲采集網站的全部網頁數據。
優選地,所述網站數據采集裝置進一步包括:
第二存儲模塊,用于將采集到的所述全部網頁數據按照不同的數據類型,存入本地內容數據庫,所述不同的數據類型包括:圖片類型、文字類型、音頻類型和視頻類型。
優選地,所述第一判斷模塊進一步包括:
第一獲得子模塊,用于通過所述欲采集網站的圖片數據,得到所述圖片數據的信息,所述圖片數據的信息至少包括:所述圖片數據的格式類型、來源地址、圖片屬性及對應網頁的源代碼;
第一查找子模塊,用于根據所述圖片數據的信息,在本地數據庫中查找與所述圖片數據的信息對應的采集規則;
第二獲得子模塊,用于通過所述欲采集網站的文字數據,得到所述文字數據的信息,所述文字數據的信息至少包括:所述文字數據的格式類型、來源地址及對應網頁的源代碼;
第二查找子模塊,用于根據所述文字數據的信息,在本地數據庫中查找與所述文字數據的信息對應的采集規則;
第三獲得子模塊,用于通過所述欲采集網站的音頻數據,得到所述音頻數據的信息,所述音頻數據的信息至少包括:所述音頻數據的格式類型、來源地址及對應網頁的源代碼;
第三查找子模塊,用于根據所述音頻數據的信息,在本地數據庫中查找與所述音頻數據的信息對應的采集規則;
第四獲得子模塊,用于通過所述欲采集網站的視頻數據,得到所述視頻數據的信息,所述視頻數據的信息至少包括:所述視頻數據的格式類型、來源地址及對應網頁的源代碼;
第四查找子模塊,用于根據所述視頻數據的信息,在本地數據庫中查找與所述視頻數據的信息對應的采集規則。
優選地,所述第一生成模塊進一步用于,根據所述部分網頁數據的數據內容中的采集屬性及內容類型,生成采集規則,所述采集規則與所述部分網頁數據對應;所述采集屬性包括:采集數據的類型,采集數據的時間,采集數據的數據量;所述內容類型包括:數據格式類型,數據時間類型,數據大小類型。
本發明實施例提供的一種網站數據采集方法及裝置,通過判斷本地數據庫中是否存儲有與部分網頁數據對應的采集規則,如果沒有存儲,根據部分網頁數據中的數據內容,生成與部分網頁數據對應的采集規則并存儲至本地數據庫,無需在每次采集數據前都編寫與欲采集數據對應的正則規則,提高數據采集效率;并且,通過分布式采集網頁數據,進一步提高采集效率。當然,實施本發明的任一產品或方法必不一定需要同時達到以上所述的所有優點。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例網站數據采集方法的流程圖;
圖2為本發明實施例網站數據采集裝置的結構示意圖;
圖3為本發明實施例的網站數據采集裝置的另一種結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
本發明實施例公開了一種網站數據采集方法,參考圖1,圖1為本發明實施例一種網站數據采集方法的流程圖,包括:
S101、獲取欲采集網站的部分網頁數據,其中部分網頁數據至少包括:欲采集網站的圖片數據、文字數據、音頻數據和視頻數據。
大規模獲取欲采集網站的數據前,先試抓取一部分該網站的網頁數據,這樣操作是為了通過抓取的小部分網頁數據判斷本地是否有對應的采集規則,從而提高采集效率。本發明實施例中所指的網頁數據至少包括:欲采集網站的圖片數據、文字數據、音頻數據和視頻數據,以上列舉并非對網頁數據包含的數據類型的限定。
S102、通過部分網頁數據,判斷本地數據庫中是否存儲有與部分網頁數據對應的采集規則。
本地數據庫可以指本地服務器中的數據庫,也可以指將本地數據庫存儲于云端服務器,無論是上述哪種數據庫,其作用均為存儲先前生成的采集規則。本發明實施例所指的采集規則,是一種用于采集數據的正則表達式,通過編寫不同的采集規則,就可以實現對網頁數據的批量采集。
通過部分網頁數據判斷本地數據庫中是否存儲有與部分網頁數據對應的采集規則,一般指,通過網頁數據所能提供的多種信息,來確定數據庫中對應的采集規則,這些信息可以包括數據類型、數據大小、數據來源等信息,具體方法可以為:
以部分網頁數據中的圖片數據為例,通過欲采集網站的圖片數據,得到圖片數據的信息,這些信息一般包括:圖片數據的格式類型,如JPEG格式、GIF格式、PNG格式等;來源地址,如圖片的來源網頁的URL地址或者IP地址;圖片屬性,如圖片大小、創建日期、修改日期等;以及圖片數據對應網頁的源代碼。根據以上圖片數據的信息,在本地數據庫中查找與所述圖片數據的信息對應的采集規則。舉例說明,通過圖片的創建日期在本地數據庫中查找采集規則:假設圖片的創建日期為2015年3月2日,本地數據庫中存儲的采集規則為:獲取2015年1至6月的數據(正則表達式為\d{2015}[年|\-|\.]\d{\1-\6}[月|\-|\.]\d{\1-\31}日?),則系統會在本地數據庫中查找到該采集規則。
再以部分網頁數據中的音頻數據為例,通過欲采集網站的音頻數據,得到音頻數據的信息,這些信息一般包括:音頻數據的格式類型,如WAV格式、MP3格式等;來源地址,如音頻的來源網頁的URL地址或者IP地址;音頻屬性,如音頻大小、創建日期、修改日期等;以及音頻數據對應網頁的源代碼。根據以上音頻數據的信息,在本地數據庫中查找與所述音頻數據的信息對應的采集規則。舉例說明,通過音頻的來源IP地址或URL地址在本地數據庫中查找采集規則:假設音頻的來源URL地址為www.yahoo.com,本地數據庫中存儲的采集規則為:
(http|ftp|https)://[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&;:/~\+#]*[\w\-\@?^=%&;/~\+#])?,因為音頻的來源URL地址和正則規則不對應,因此系統不會在本地數據庫中查找到該采集規則。
再以部分網頁數據中的文字數據為例,通過欲采集網站的音頻數據,得到文字數據的信息,這些信息一般包括:文字數據的格式類型,如txt格式;來源地址,如文字的來源網頁的URL(Uniform Resource Locator,統一資源定位符)地址或者IP(Internet Protocol,互聯網協議)地址;文字屬性,如文字創建日期、修改日期等;以及文字數據對應網頁的源代碼。根據以上文字數據的信息,在本地數據庫中查找與所述文字數據的信息對應的采集規則,具體查找方法與上文中的查找類似,此處不再贅述。
同樣的,以部分網頁數據中的視頻數據為例,通過欲采集網站的視頻數據,得到視頻數據的信息,這些信息一般包括:視頻數據的格式類型,如mp4格式、avi格式;來源地址,如視頻的來源網頁的URL地址或者IP地址;視頻屬性,如視頻大小、創建日期、修改日期等;以及視頻數據對應網頁的源代碼。根據以上視頻數據的信息,在本地數據庫中查找與所述視頻數據的信息對應的采集規則,具體查找方法與上文中的查找類似,此處不再贅述。
S103、如果有存儲,調取本地數據庫中的采集規則。
本地數據庫可以指本地服務器中的數據庫,也可以指將本地數據庫存儲于云端服務器,無論是上述哪種數據庫,其作用均為存儲先前生成的采集規則。如果本地數據庫中存儲有與部分網頁數據對應的采集規則,直接調取對應的采集規則。
S104、如果沒有存儲,根據部分網頁數據中的數據內容,生成與部分網頁數據對應的采集規則。
系統實時判斷本地數據庫中是否存儲有采集網頁數據對應的采集規則,在檢測到沒有采集規則時,可以根據部分網頁數據的數據內容中的采集屬性及內容類型,生成與部分網頁數據對應的采集規則。通常情況下,數據內容中的采集屬性是指,采集到的數據內容所固有的屬性,它由數據內容自身攜帶,可以為數據劃分提供依據;而數據內容中的內容類型是指,采集到的數據按照不同的類別進行劃分,以方便日后查找使用。
一般的,采集屬性可以包括:采集數據的類型,采集數據的時間,采集數據的數據量。例如,采集數據的格式類型,采集數據的采集時間,采集數據的占用空間大小,這些都是采集數據的固有屬性。以上只是采集屬性的列舉而非限定,只要采集屬性能夠對內容類型提供依據,都屬于本發明實施例保護范圍。
一般的,內容類型可以包括:數據格式類型,數據時間類型,數據大小類型等分類。例如,將數據按照不同的格式類型進行分類,或將數據按照不同的采集時間進行分類,或將數據按照不同的占用空間大小進行分類。以上只是對分類方法的列舉而非限定,只要能保證通過對數據內容類型達到對數據內容規劃的目的,都屬于本發明實施例保護范圍。
采集規則可以利用正則表達式軟件生成,也可以人工編寫,其生成過程屬于現有技術,在此不再贅述。
S105、存儲采集規則至本地數據庫。
將生成的采集規則存儲值本地數據庫,需要說明的是,本地數據庫可以指本地服務器中的數據庫,也可以指將本地數據庫存儲于云端服務器,無論是上述哪種數據庫,其作用均為存儲先前生成的采集規則。并且,數據庫中的采集規則是實時更新的,只要有新的采集規則生成,就存入本地數據庫。
S106、根據采集規則,生成數據采集腳本程序。
數據采集腳本程序是用來采集網頁數據的程序,一般的,數據采集腳本程序可以通過數據抓取軟件生成,也可以通過Javascript編譯,Javascript是一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言。數據采集腳本程序還可以通過PHP(Hypertext Preprocessor,超文本預處理器)中的Snoopy進行編譯。其中,Snoopy是一個PHP類,用來模擬瀏覽器的功能,具有獲取網頁內容,發送表單的功能。
S107、通過數據采集腳本程序,分布式采集所述欲采集網站的全部網頁數據。
分布式計算,是把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然后把這些部分分配給許多計算機進行處理,最后把這些計算結果綜合起來得到最終的結果。本發明實施例中的分布式采集方式正是運用了分布式計算原理,利用多臺具有相同功能的服務器共同采集網頁數據,從而降低采集時每臺服務器運算負荷,還能提高采集效率。
本發明上述實施例提供的網站數據采集方法無需在每次采集數據前都編寫與欲采集數據對應的正則規則,提高網頁數據采集效率,并且,采用分布式采集,進一步提高網頁數據采集的效率。
本發明實施例還公開了一種網站數據采集方法的另一種實施例,在實施例一的基礎上進一步包括:
S201、將采集到的全部網頁數據按照不同的數據類型,存入本地內容數據庫,其中不同的數據類型包括:圖片類型、文字類型、音頻類型和視頻類型。
本地內容數據庫用于存儲采集到的網頁數據,可以按照不同的數據類型進行存儲,這些數據類型包括圖片、文字、音頻、視頻等不同的類型;也可以按照數據的采集時間存儲;或者,還可以按照數據所占用空間的大小進行分類存儲。
S202、記錄采集腳本程序的運行狀態,生成運行狀態日志。
系統實時記錄采集腳本程序的運行狀態是否正常,并生成運行狀態日志,供運維人員可以查看采集腳本程序的運行狀態。
S203、根據運行狀態日志,判斷欲采集網站狀態是否正常,如果欲采集網站狀態正常,繼續采集;如果欲采集網站狀態異常,終止采集。
同時,系統也可以根據記錄的運行狀態日志,判斷欲采集網站狀態是否正常。例如,如果日志中顯示采集腳本程序無法采集欲采集網站的數據,說明欲采集網站系統可能出現異常。
系統根據所得出的判斷結果,決定是否繼續采集數據,如果欲采集網站狀態正常,繼續采集,如果欲采集網站狀態異常,終止采集,避免不必要的運算資源浪費。并且,通過生成運行狀態日志,可以使運維人員查看采集腳本程序的運行狀態,提高采集系統的穩定性。
本發明上述實施例提供的網站數據采集方法,通過將采集到的數據按照不同數據類型存入本地數據庫,實現對采集到的數據的歸納整理,能夠在需要使用數據時方便快速地調取。
本發明實施例還公開了一種網站數據采集裝置,參考圖2,圖2為本發明實施例的網站數據采集裝置的結構示意圖,包括:
獲取模塊301,用于獲取欲采集網站的部分網頁數據,所述部分網頁數據至少包括:所述欲采集網站的圖片數據、文字數據、音頻數據和視頻數據。
第一判斷模塊302,用于通過所述部分網頁數據,判斷本地數據庫中是否存儲有與所述部分網頁數據對應的采集規則。
其中,第一判斷模塊302進一步包括:
第一獲得子模塊3021,用于通過欲采集網站的圖片數據,得到圖片數據的信息,圖片數據的信息至少包括:圖片數據的格式類型、來源地址、圖片屬性及對應網頁的源代碼。
第一查找子模塊3022,用于根據圖片數據的信息,在本地數據庫中查找與圖片數據的信息對應的采集規則。
第二獲得子模塊3023,用于通過欲采集網站的文字數據,得到文字數據的信息,文字數據的信息至少包括:文字數據的格式類型、來源地址及對應網頁的源代碼。
第二查找子模塊3024,用于根據文字數據的信息,在本地數據庫中查找與文字數據的信息對應的采集規則。
第三獲得子模塊3025,用于通過欲采集網站的音頻數據,得到音頻數據的信息,音頻數據的信息至少包括:音頻數據的格式類型、來源地址及對應網頁的源代碼。
第三查找子模塊3026,用于根據音頻數據的信息,在本地數據庫中查找與音頻數據的信息對應的采集規則。
第四獲得子模塊3027,用于通過欲采集網站的視頻數據,得到視頻數據的信息,視頻數據的信息至少包括:視頻數據的格式類型、來源地址及對應網頁的源代碼。
第四查找子模塊3028,用于根據視頻數據的信息,在本地數據庫中查找與所述視頻數據的信息對應的采集規則。
調取模塊303,用于如果有存儲,調取所述本地數據庫中的采集規則。
第一生成模塊304,用于如果沒有存儲,根據所述部分網頁數據中的數據內容,生成與所述部分網頁數據對應的采集規則。
其中,第一生成模塊304進一步用于,根據部分網頁數據的數據內容中的采集屬性及內容類型,生成采集規則,采集規則與部分網頁數據對應;采集屬性包括:采集數據的類型,采集數據的時間,采集數據的數據量;內容類型包括:數據格式類型,數據時間類型,數據大小類型。
第一存儲模塊305,用于存儲所述采集規則至所述本地數據庫。
第二生成模塊306,用于根據所述采集規則,生成數據采集腳本程序。
采集模塊307,用于通過所述數據采集腳本程序,分布式采集所述欲采集網站的全部網頁數據。
本發明上述實施例提供的網站數據采集裝置無需在每次采集數據前都編寫與欲采集數據對應的正則規則,提高網頁數據采集效率,并且,采用分布式采集,進一步提高網頁數據采集的效率。
需要說明的是,本發明實施例的裝置是應用上述網站數據采集方法的裝置,則上述網站數據采集方法的所有實施例均適用于該裝置,且均能達到相同或相似的有益效果。
本發明實施例還公開了一種網站數據采集裝置,參考圖3,圖3為本發明實施例的網站數據采集裝置的另一種結構示意圖,在圖2所示結構的基礎上進一步包括:
第二存儲模塊308,用于將采集到的所述全部網頁數據按照不同的數據類型,存入本地內容數據庫,所述不同的數據類型包括:圖片類型、文字類型、音頻類型和視頻類型。
記錄模塊309,用于記錄采集腳本程序的運行狀態,生成運行狀態日志。
第二判斷模塊310,用于根據運行狀態日志,判斷欲采集網站狀態是否正常,如果欲采集網站狀態正常,繼續采集;如果欲采集網站狀態異常,終止采集。
本發明上述實施例提供的網站數據采集裝置,能夠對采集到的數據的歸納整理,能夠在需要使用數據時方便快速地調取。并且,通過生成運行狀態日志,可以使運維人員查看采集腳本程序的運行狀態,提高采集系統的穩定性。
需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
本說明書中的各個實施例均采用相關的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所作的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。