本發(fā)明屬于在互聯(lián)網(wǎng)復(fù)雜多變的環(huán)境下,獲取精準信息數(shù)據(jù)的技術(shù)領(lǐng)域,特別是一種基于多重分析的互聯(lián)網(wǎng)信息精準爬取方法。
背景技術(shù):
當前網(wǎng)絡(luò)世界,技術(shù)非常先進,也非常復(fù)雜,各種網(wǎng)站都會采用一定的內(nèi)容更新方式,以達到網(wǎng)站內(nèi)容的及時更新,來吸引更多用戶。并且針對互聯(lián)網(wǎng)上的各種黑客攻擊,設(shè)計一整套完善的防黑客攻擊手段,其中就包括各大網(wǎng)站都會部署的頁面內(nèi)容防爬技術(shù)等等。
而當今時代絕對是信息為王的時代,誰能按需及時獲取第一手信息,誰就會在商業(yè)市場掌握第一手判斷依據(jù)。針對這種特殊需求,我們需要為市場客戶提供一套完整的解決方案,而且這種需求也更多的被個人所喜歡,這些人群就包含媒體工作人員、評論員、企業(yè)市場人員等等。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,以及現(xiàn)有技術(shù)的不完整,提供一種基于多重分析的互聯(lián)網(wǎng)信息精準爬取方法。
本發(fā)明解決其技術(shù)問題是采取以下技術(shù)方案實現(xiàn)的:
一種基于多重分析的互聯(lián)網(wǎng)信息精準爬取方法,該方法包括步驟如下:
第一步,頁面信息爬取,首先將頁面信息分為靜態(tài)頁面信息和動態(tài)頁面信息,然后將靜態(tài)頁面信息和動態(tài)頁面信息分別進行爬取,并且要分配每個頁面一個主題,便于后期進行數(shù)據(jù)分析;
第二步,對上述爬取信息進行解析處理,首先將上述爬取信息分類為滿足dom模型的結(jié)構(gòu)信息和非結(jié)構(gòu)信息,然后對分類信息分別處理,具體步驟如下:
(1)判斷爬取信息是否符合超文本標記語言格式;
(2)裝載爬取內(nèi)容的源碼到一個Document對象;
(3)分析爬取內(nèi)容的標簽規(guī)則,找出具有獨特的標簽定義邏輯;
(4)利用dom模型的解析原理,確定解析表達式;
第三步,對上述明確解析規(guī)則后的爬取任務(wù)進行多線程任務(wù)處理,并配置各種多線程任務(wù)的周期頻度。
而且,所述第一步的將靜態(tài)頁面信息和動態(tài)頁面信息分別進行爬取的具體方法為:
(1)靜態(tài)頁面信息的爬取
①選好需要爬取內(nèi)容的網(wǎng)頁,明確具體的網(wǎng)頁地址;
②確認該頁面內(nèi)需要爬取的內(nèi)容為靜態(tài)內(nèi)容,也就是在頁面未刷新的情況下不會實時變動的頁面內(nèi)容;
③利用輸入流讀取遠程靜態(tài)資源的數(shù)據(jù),為避免各種防爬技術(shù)的阻止,需要做設(shè)置refer,設(shè)置User-Agent的偽裝處理;
④判斷讀取內(nèi)容的完整性,也就是讀取內(nèi)容是標準的符合超文本標記語言格式,并且爬取源代碼里包含我們所要爬取的內(nèi)容,即確認頁面內(nèi)容爬取成功。
(2)動態(tài)頁面信息的爬取
①選好需要爬取內(nèi)容的網(wǎng)頁,明確具體的網(wǎng)頁地址;
②確認該頁面內(nèi)需要爬取的內(nèi)容為動態(tài)內(nèi)容,也就是在頁面未刷新的情況下,頁面內(nèi)容會實時變動;
③利用一種直譯式腳本語言獲取動態(tài)內(nèi)容的加載技術(shù),具體為采用Phantomjs的開源插件或HtmlUtil來深入鉆去,從系統(tǒng)服務(wù)器端讀取該頁面內(nèi)容,并且為避免各種防爬技術(shù)的阻止,需要做設(shè)置refer,設(shè)置User-Agent的偽裝處理;
④判斷讀取內(nèi)容的完整性,也就是讀取內(nèi)容是標準的符合超文本標記語言格式,并且爬取源代碼里包含我們所要爬取的內(nèi)容,即確認頁面內(nèi)容爬取成功。
而且,所述第二步中(3)中的標簽定義邏輯具體包括父節(jié)點與子節(jié)點的迭代關(guān)系及平級的獨特屬性參數(shù)。
而且,在所述第二步的滿足dom模型的結(jié)構(gòu)信息的解析處理及非結(jié)構(gòu)信息的解析處理步驟中,均需進一步處理包括:
①如果出現(xiàn)同級較多內(nèi)容,無法精確到爬取內(nèi)容的情況,需要分析同級排序關(guān)系,并確定爬取內(nèi)容的序號;
②當爬取內(nèi)容有多余內(nèi)容的情況時,需要將多余內(nèi)容進行刪除,確保解析出來的內(nèi)容與所要爬取內(nèi)容保持一致。
而且,所述第三步對明確解析規(guī)則后的爬取任務(wù)進行多線程任務(wù)處理,并配置各種多線程任務(wù)的周期頻度,包括如下具體內(nèi)容:
(1)可選擇配置周期頻度的種類:
①確定某一天中的某個時間,該時間精確到毫秒級;
②確定某一周的某些天;
③確定某一個月的某些天;
④確定某一年的某些天;
⑤在一個指定的次數(shù)重復(fù);
⑥重復(fù)到一個指定的時間/日期;
⑦無限重復(fù);
⑧在一個間隔內(nèi)重復(fù)。
(2)根據(jù)解析規(guī)則和配置的爬取時間周期頻度,將每個解析規(guī)則當成一個任務(wù)一個線程,對相同內(nèi)容配置多個任務(wù)多個線程,實現(xiàn)步驟內(nèi)容:
①創(chuàng)建多線程的不定容線程池,線程池根據(jù)線程數(shù)自動擴容;
②啟動線程,配置線程持久化;
③爬取任務(wù)結(jié)束后,線程自動回收,釋放線程資源;
④根據(jù)配置周期頻度,下一次線程自動啟動。
本發(fā)明的優(yōu)點和積極效果是
1、本發(fā)明爬取準確度高。
2、本發(fā)明具有靈活性強,機動性強的特點。
3、本發(fā)明操作簡便,任務(wù)可視化直觀。
附圖說明
圖1是本發(fā)明方法所使用硬件的架構(gòu)結(jié)構(gòu)示意圖。
具體實施方式
以下對本發(fā)明實施例做進一步詳述,以下實施例只是描述性的,不是限定性的,不能以此限定本發(fā)明的保護范圍。
一種基于多重分析的互聯(lián)網(wǎng)信息精準爬取方法,如圖1所示,該方法使用的硬件系統(tǒng)包括多個外部網(wǎng)站,與多個外部網(wǎng)站連接的信息外網(wǎng)設(shè)備,通過隔離裝置與信息外網(wǎng)設(shè)備連接的信息內(nèi)網(wǎng)設(shè)備,其中,信息外網(wǎng)設(shè)備包括負載均衡器及相應(yīng)數(shù)量的信息外網(wǎng)服務(wù)器,其中,信息內(nèi)網(wǎng)設(shè)備包括相應(yīng)數(shù)量的信息內(nèi)網(wǎng)服務(wù)器、結(jié)構(gòu)化數(shù)據(jù)庫、系統(tǒng)服務(wù)器及后臺管理端,該方法的內(nèi)容包括如下步驟:
第一步,頁面信息爬取,首先將頁面信息分為靜態(tài)頁面信息和動態(tài)頁面信息,然后將靜態(tài)頁面信息和動態(tài)頁面信息分別進行爬取,并且要分配每個頁面一個主題,便于后期進行數(shù)據(jù)分析;
(1)靜態(tài)頁面信息的爬取,包括步驟內(nèi)容:
①選好需要爬取內(nèi)容的網(wǎng)頁,明確具體的網(wǎng)頁地址;
②確認該頁面內(nèi)需要爬取的內(nèi)容為靜態(tài)內(nèi)容,也就是在頁面未刷新的情況下不會實時變動的頁面內(nèi)容;
③利用輸入流讀取遠程靜態(tài)資源的數(shù)據(jù),為避免各種防爬技術(shù)的阻止,需要做一些偽裝處理,例如設(shè)置refer,設(shè)置User-Agent等方式;
④判斷讀取內(nèi)容的完整性,也就是讀取內(nèi)容是標準的符合超文本標記語言格式,并且爬取源代碼里包含我們所要爬取的內(nèi)容,即確認頁面內(nèi)容爬取成功。
(2)動態(tài)頁面信息的爬取,包括步驟內(nèi)容:
①選好需要爬取內(nèi)容的網(wǎng)頁,明確具體的網(wǎng)頁地址;
②確認該頁面內(nèi)需要爬取的內(nèi)容為動態(tài)內(nèi)容,也就是在頁面未刷新的情況下,頁面內(nèi)容會實時變動;
③利用一種直譯式腳本語言獲取動態(tài)內(nèi)容的加載技術(shù),具體為例如采用Phantomjs的開源插件或HtmlUtil來深入鉆去,從系統(tǒng)服務(wù)器端讀取該頁面內(nèi)容,并且為避免各種防爬技術(shù)的阻止,需要做一些偽裝處理,例如設(shè)置refer,設(shè)置User-Agent等方式;
④判斷讀取內(nèi)容的完整性,也就是讀取內(nèi)容是標準的符合超文本標記語言格式,并且爬取源代碼里包含我們所要爬取的內(nèi)容,即確認頁面內(nèi)容爬取成功;
第二步,對上述爬取信息進行解析處理,首先將上述爬取信息分類為滿足dom模型的結(jié)構(gòu)信息和非結(jié)構(gòu)信息,然后對分類信息分別處理,具體步驟如下:
(1)判斷爬取信息是否符合超文本標記語言格式;
(2)裝載爬取內(nèi)容的源碼到一個Document對象;
(3)分析爬取內(nèi)容的標簽規(guī)則,找出具有獨特的標簽定義邏輯(包含父節(jié)點與子節(jié)點的迭代關(guān)系及平級的獨特屬性參數(shù));
(4)利用dom模型的解析原理,確定解析表達式;
(5)如果出現(xiàn)同級較多內(nèi)容,無法精確到爬取內(nèi)容的情況,需要分析同級排序關(guān)系,并確定爬取內(nèi)容的序號;
(6)當爬取內(nèi)容有多余內(nèi)容的情況時,需要將多余內(nèi)容進行刪除,確保解析出來的內(nèi)容與所要爬取內(nèi)容保持一致;
第三步,對上述明確解析規(guī)則后的爬取任務(wù)進行多線程任務(wù)處理,并配置各種多線程任務(wù)的周期頻度,具體包括如下內(nèi)容:
(1)可配置周期頻度的種類:
①確定某一天中的某個時間,該時間精確到毫秒級;
②確定某一周的某些天;
③確定某一個月的某些天;
④確定某一年的某些天;
⑤在一個指定的次數(shù)重復(fù);
⑥重復(fù)到一個指定的時間/日期;
⑦無限重復(fù);
⑧在一個間隔內(nèi)重復(fù);
(2)根據(jù)上面明確的解析規(guī)則和爬取時間周期頻度,將每個解析規(guī)則當成一個任務(wù)為一個線程,對相同內(nèi)容配置多個任務(wù)多個線程,實現(xiàn)步驟內(nèi)容:
①創(chuàng)建多線程的不定容線程池,線程池根據(jù)線程數(shù)自動擴容;
②啟動線程,配置線程持久化;
③爬取任務(wù)結(jié)束后,線程自動回收,釋放線程資源;
④根據(jù)配置周期頻度,下一次線程自動啟動。
整個爬取過程,由最初的尋找爬取內(nèi)容的網(wǎng)頁,到動態(tài)、靜態(tài)內(nèi)容的爬取,再到爬取源碼內(nèi)容的解析規(guī)則分析,及后續(xù)自動精準式爬取任務(wù)配置,環(huán)環(huán)相扣,以實現(xiàn)多重分析后的互聯(lián)網(wǎng)信息精準爬取方法。