一種基于b2b平臺的多線程數(shù)據(jù)抓取方法
【專利摘要】本發(fā)明公開了一種基于B2B平臺的多線程數(shù)據(jù)抓取方法,1)將B2B平臺的首頁、多級類型目錄結構作為目標對象,對網(wǎng)頁源文件進行分析;2)在URL處理器中分析出需要的目標規(guī)則;3)通過HTTP解析器,從隧道協(xié)議中獲取一定格式的數(shù)據(jù);4)對每次URL請求分配新的線程,通過多線程模式并發(fā)處理;5)通過分類管理器進行管理每一種商品大類到小類的規(guī)則;6)對該線程超時的設置;7)根據(jù)所述固定格式數(shù)據(jù),將所有提取的商品數(shù)據(jù)內(nèi)容保存至數(shù)據(jù)庫;本發(fā)明提供的基于B2B平臺的多線程數(shù)據(jù)抓取方法,在大數(shù)據(jù)并發(fā)實時采集、多線程數(shù)據(jù)抓取上有顯著的效果。
【專利說明】
一種基于B2B平臺的多線程數(shù)據(jù)抓取方法
技術領域
[0001]本發(fā)明涉及一種基于B2B平臺的多線程數(shù)據(jù)抓取方法。
【背景技術】
[0002]電子商務發(fā)展至今,通過了解競爭對手方面,各項信息內(nèi)容,包括產(chǎn)品、銷量,用戶數(shù)等;這些數(shù)據(jù)只有在平臺上通過技術手段進行獲取。
[0003]當競爭對手網(wǎng)站出現(xiàn)信息產(chǎn)品信息,或者更新產(chǎn)品信息時,通過我們B2B平臺的多線程數(shù)據(jù)抓取方法,將很高效獲取競爭對手的所有數(shù)據(jù)。
[0004]國內(nèi)現(xiàn)有的數(shù)據(jù)抓取方法,特別是針對B2B平臺的采集,以及在大數(shù)據(jù)并發(fā)計算中,再實時性以及大數(shù)據(jù)量的情況下,容易出現(xiàn)很多問題或者無法保證實時性,比如:
[0005]中國專利CN201210141520.5,給出了一種數(shù)據(jù)抓取系統(tǒng),所述系統(tǒng)包括鉤子加載模塊、抓取鉤子模塊、配置文件生成模塊。鉤子加載模塊用以根據(jù)進程數(shù)量生成設定數(shù)量的抓取鉤子模塊,配置給需要抓取的進程。抓取鉤子模塊用以監(jiān)控其對應進程中業(yè)務數(shù)據(jù)的傳遞,并抓取相應的業(yè)務數(shù)據(jù)。提出的數(shù)據(jù)抓取系統(tǒng),可方便快捷地抓取其他C/S結構業(yè)務系統(tǒng)的數(shù)據(jù),并提供給其他業(yè)務系統(tǒng)錄入??勺ト/S構架中的WINDOWS窗口中的控件數(shù)據(jù),對其他業(yè)務系統(tǒng)進行窗口數(shù)據(jù)抓取,并將抓取到的數(shù)據(jù)按照可配置的格式寫入文件,提供給其他系統(tǒng)的數(shù)據(jù)的輸入。該方法屬于在C/S架構中進行數(shù)據(jù)抓取,無法適用于網(wǎng)頁以及B2B的網(wǎng)站中。
[0006]中國專利CN201510378181.6,提出的方法包括:接收針對各個平臺所需的目標數(shù)據(jù)分別設置的數(shù)據(jù)抓取參數(shù);根據(jù)針對各個平臺設置的所述數(shù)據(jù)抓取參數(shù)執(zhí)行相應的數(shù)據(jù)抓取規(guī)則,在互聯(lián)網(wǎng)上抓取所述平臺所需的目標數(shù)據(jù);對抓取的所述目標數(shù)據(jù)進行展示;接收對展示的所述目標數(shù)據(jù)的篩選操作,并且將篩選后的所述目標數(shù)據(jù)發(fā)布到所述平臺的頁面專區(qū)中。簡化了運營人員獲取目標數(shù)據(jù)的操作步驟,降低了運營人員獲取目標數(shù)據(jù)的工作量,同時大幅度提高了發(fā)布的文章資訊的數(shù)量和質(zhì)量,平均每位運營人員每天可以發(fā)布優(yōu)質(zhì)文章的數(shù)量大大增加。該方法主要解決目標數(shù)據(jù)篩選的操作問題,以及對專有目標數(shù)據(jù)進行處理,在B2B網(wǎng)站中無法實施該內(nèi)容。
【發(fā)明內(nèi)容】
[0007]發(fā)明目的:為了解決B2B網(wǎng)站在多線程抓取和對隱藏內(nèi)容的調(diào)用獲取,本發(fā)明提供一種基于B2B平臺的多線程數(shù)據(jù)抓取方法,針對B2B平臺多級調(diào)用,嵌套調(diào)用獲取內(nèi)容的數(shù)據(jù)抓取,以及隱含內(nèi)容的抓取方法。B2B平臺的多線程數(shù)據(jù)抓取方法針對各腳本文件,包括樣式,嵌套調(diào)用等難以解決獲取數(shù)據(jù)的問題,并且通過該方法高效的解決了該問題。
[0008]本發(fā)明的技術方案是,一種基于B2B平臺的多線程數(shù)據(jù)抓取方法,其特征在于:包括如下步驟:
[0009](I)將B2B平臺的首頁、多級類型目錄結構作為目標對象,對網(wǎng)頁源文件進行分析,對B2B平臺數(shù)據(jù)源的商品數(shù)據(jù)進行實時采集的方法為:
[0010]在源文件中剔除無用的信息內(nèi)容,剔除方式通過我們的標簽庫來遞歸調(diào)用;
[0011]源文件分析出有效URL,將URL轉移至下一步驟;
[0012](2)在URL處理器中分析出們需要的目標規(guī)則,再做一次URL請求,獲取下一層的源碼內(nèi)容,將源碼內(nèi)容放置緩沖區(qū),然后將緩沖區(qū)的內(nèi)容轉移至下一目標任務進行處理;對該源碼內(nèi)容部分代碼過濾其中不需要的內(nèi)容,如廣告信息、版權信息、標簽標記等,以達到去偽存精的目的;找到源碼內(nèi)容循環(huán)分頁的規(guī)律,并將源碼內(nèi)容進行分離。
[0013](3)通過HTTP解析器,從隧道協(xié)議中獲取一定格式的數(shù)據(jù)(鍵值對形式數(shù)據(jù),包裝數(shù)組結構數(shù)據(jù),以及特征字符的結構數(shù)據(jù)),進行提取為我們所需要的目標數(shù)據(jù)結果,再次對該結果進行格式篩選,去除無效字符;開啟多個發(fā)出HTTP請求的線程,每個URL請求只請求資源文件的相同格式部分內(nèi)容,合并每個線程下載的文件;為了在很多情況下減少發(fā)送請求,同時在許多情況下可以不需要發(fā)送全部html內(nèi)容。減少了網(wǎng)絡回路的數(shù)量,也減少了網(wǎng)絡應用的帶寬。
[0014](4)線程處理,對每次URL請求分配新的線程,通過多線程模式并發(fā)處理。
[0015]通過線程管理器實現(xiàn)多線程調(diào)用操作,當某一線程失敗時將自動掛起;并且每個請求需要一個單獨的線程完成;在線程池中,線程數(shù)一般是固定的,線程總數(shù)不超過線程池中所能容納線程的數(shù)目,當服務器不利用線程池時處理這些請求時則請求線程總數(shù)不大于50000;
[0016](5)分類管理器,通過分類管理器進行管理每一種商品大類到小類的規(guī)則,當數(shù)據(jù)匹配規(guī)則成功后,將首先獲取大類商品源碼,再遞歸調(diào)用子類商品源碼文件。
[0017](6)通過對該線程超時的設置,當該超時區(qū)間時間內(nèi)檢測不到該線程是否執(zhí)行成功,那么對該線程處理標記進行設置為失敗,當在系統(tǒng)空閑狀態(tài)時自動觸發(fā)該線程重新啟動。線程池將基于識別直接處理,或增加工作者數(shù)處理,進入待處理隊列,其他線程池會直接將任務放入待處理隊列,等待工作線程去取出執(zhí)行。
[0018](7)通過固定格式、指鍵值對形式數(shù)據(jù),包裝數(shù)組結構數(shù)據(jù),以及特征字符的結構數(shù)據(jù)格式,將所有提取的商品數(shù)據(jù)內(nèi)容保存至數(shù)據(jù)庫中。
[0019]有益效果:本發(fā)明提供了一種基于B2B平臺的多線程數(shù)據(jù)抓取方法,針對B2B平臺多級調(diào)用,嵌套調(diào)用獲取內(nèi)容的數(shù)據(jù)抓取,以及隱含內(nèi)容的抓取方法,且針對各腳本文件,包括樣式、嵌套調(diào)用等難以解決獲取數(shù)據(jù)的問題,高效的解決了該問題。
【附圖說明】
[0020]圖1為本發(fā)明方法的實施流程圖。
【具體實施方式】
[0021]本發(fā)明基于B2B平臺的多線程數(shù)據(jù)抓取方法,包括如下步驟:
[0022](I)將B2B平臺的首頁、多級類型目錄結構作為目標對象,對網(wǎng)頁源文件進行分析,對數(shù)據(jù)源的數(shù)據(jù)進行實時采集的方法為:
[0023]在源文件中剔除無用的信息內(nèi)容,剔除方式通過標簽庫來遞歸調(diào)用;
[0024]所述標簽庫為一系列的Html常用標簽字符類型,該類型存放于內(nèi)存數(shù)組中,通過循環(huán)調(diào)用匹配,最終剔除無用信息。
[0025]源文件分析出有效URL,將URL轉移至下一步驟;
[0026](2)在URL處理器中分析出我們需要的目標規(guī)則,再做一次URL請求,獲取下一層的源碼內(nèi)容,將內(nèi)容放置緩沖區(qū),我們將緩沖區(qū)的內(nèi)容轉移至下一目標任務進行處理;
[0027]對該部分代碼過濾其中不需要的內(nèi)容,如廣告信息、版權信息、標簽標記等,以達到去偽存精的目的。找到循環(huán)分頁的規(guī)律,并將內(nèi)容進行分離。
[0028](3)通過HTTP解析器,從隧道協(xié)議中獲取一定格式的數(shù)據(jù),即鍵值對形式數(shù)據(jù),包裝數(shù)組結構數(shù)據(jù),以及特征字符的結構數(shù)據(jù)進行提取為我們所需要的目標數(shù)據(jù)結果,再次對該結果進行格式篩選。開啟多個發(fā)出HTTP請求的線程,每個HTTP請求只請求資源文件的一部分,合并每個線程下載的文件,為了在很多情況下減少發(fā)送請求,同時在許多情況下可以不需要發(fā)送完整響應。減少了網(wǎng)絡回路的數(shù)量,也減少了網(wǎng)絡應用的帶寬。
[0029](4)線程處理,對每次url請求分配新的線程,通過多線程模式并發(fā)處理。
[0030]通過線程管理器實現(xiàn)多線程調(diào)用操作,當線程失敗時將自動掛起。當一個服務器一天要處理50000個請求時,并且每個請求需要一個單獨的線程完成。在線程池中,線程數(shù)一般是固定的,線程總數(shù)不超過線程池中線程的數(shù)目,當服務器不利用線程池時處理這些請求則線程總數(shù)為50000。一般線程池大小是遠小于50000。利用線程池不會為了創(chuàng)建50000線程而在處理請求時浪費時間,從而提高效率。
[0031](5)分類管理器,通過分類管理器進行管理每一種商品大類到小類的規(guī)則,當數(shù)據(jù)匹配規(guī)則成功后,將首先獲取大類源碼,再遞歸調(diào)用子類源碼文件。
[0032](6)通過對該線程超時的設置,當該超時區(qū)間時間內(nèi)檢測不到該線程是否執(zhí)行成功,那么對該線程處理標記進行設置為失敗,當在系統(tǒng)空閑狀態(tài)時自動觸發(fā)該線程重新啟動。線程池將基于識別直接處理,或增加工作者數(shù)處理,進入待處理隊列,其他線程池會直接將任務放入待處理隊列,等待工作線程去取出執(zhí)行。
[0033](7)通過所述固定格式將所有提取的內(nèi)容保存至數(shù)據(jù)庫中。
[0034]上述HTTP解析的步驟,(I)解析Html超文本標記語言源文件,包括Html文件中js腳本文件,以及CSS文件等,從中進行處理;(2)通過源文件解析器進行處理,按不同的格式進行解析處理;(3)通過http包處理器獲取js腳本返回的隱藏內(nèi)容;http為超文本傳輸協(xié)議,主要用于從WWW服務器傳輸超文本到本地瀏覽器;(4)隱藏內(nèi)容的匹配與處理;(5)最終數(shù)據(jù)處理整合(合并);(6)線程管理器并發(fā)處理新的任務。
[0035]所述解析處理,通過若干規(guī)則,包括正則,不規(guī)則數(shù)組結構,根據(jù)鍵值對的方式進行匹配處理,輸出匹配結果。
[0036]所述隱藏內(nèi)容,是通過一組URL訪問進行獲得的數(shù)據(jù),從該數(shù)據(jù)中遍歷出當前規(guī)則中所需數(shù)據(jù),將該隱藏內(nèi)容進行解析處理,輸出匹配結果。
[0037]最終數(shù)據(jù)將各存放于內(nèi)存中的匹配結果,通過鍵值對的形式提取出結果數(shù)據(jù),再包裝于數(shù)組中,將行數(shù)據(jù)存放于數(shù)據(jù)庫中。
[0038]雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬技術領域中具有通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當可作各種的更動與潤飾。因此,本發(fā)明的保護范圍當視權利要求書所界定者為準。
【主權項】
1.一種基于B2B平臺的多線程數(shù)據(jù)抓取方法,其特征在于:包括如下步驟: (1)將B2B平臺的首頁、多級類型目錄結構作為目標對象,對網(wǎng)頁源文件進行分析,對B2B平臺數(shù)據(jù)源的商品數(shù)據(jù)進行實時采集的方法為:在源文件中剔除無用的信息內(nèi)容,剔除方式通過的標簽庫來遞歸調(diào)用;源文件分析出有效URL,將URL轉移至下一步驟; (2)在URL處理器中分析出需要的目標規(guī)則,再做一次URL請求,獲取下一層的源碼內(nèi)容,將源碼內(nèi)容放置緩沖區(qū),然后將緩沖區(qū)的內(nèi)容轉移至下一目標任務進行處理;對該源碼內(nèi)容部分代碼過濾其中不需要的內(nèi)容,包括廣告信息、版權信息、標簽標記,以達到去偽存精的目的;找到源碼內(nèi)容循環(huán)分頁的規(guī)律,并將源碼內(nèi)容進行分離; (3)通過HTTP解析器,從隧道協(xié)議中獲取一定格式的數(shù)據(jù)、一定格式表示為鍵值對形式的數(shù)據(jù),包裝數(shù)組結構的數(shù)據(jù)、以及特征字符的結構數(shù)據(jù);數(shù)據(jù)提取為所需要的目標數(shù)據(jù)結果,再次對該結果進行格式篩選,去除無效字符;開啟多個發(fā)出HTTP請求的線程,每個URL請求只請求資源文件的一部分,合并每個線程下載的文件; (4)線程處理,對每次URL請求分配新的線程,通過多線程模式并發(fā)處理; 通過線程管理器實現(xiàn)多線程調(diào)用操作,當某一線程失敗時將自動掛起;并且每個請求需要一個單獨的線程完成;在線程池中,線程數(shù)是固定的,線程總數(shù)不超過線程池中所能容納線程的數(shù)目,當服務器不利用線程池時處理這些請求時則請求線程總數(shù)不大于50000; (5)分類管理器,通過分類管理器進行管理每一種商品大類到小類的規(guī)則,當數(shù)據(jù)匹配規(guī)則成功后,將首先獲取大類商品源碼,再遞歸調(diào)用子類商品源碼文件; (6)通過對該線程超時的設置,當該超時區(qū)間時間內(nèi)檢測不到該線程是否執(zhí)行成功,那么對該線程處理標記進行設置為失敗,當在系統(tǒng)空閑狀態(tài)時自動觸發(fā)該線程重新啟動;線程池將基于識別直接處理,或增加工作者數(shù)處理,進入待處理隊列,其他線程池會直接將任務放入待處理隊列,等待工作線程去取出執(zhí)行; (7)根據(jù)所述固定格式數(shù)據(jù),將所有提取的商品數(shù)據(jù)內(nèi)容保存至數(shù)據(jù)庫中。2.根據(jù)權利要求1的方法,其特征是HTTP解析的步驟,(I)解析Html超文本標記語言源文件,包括Html文件中js腳本文件和css文件,從中進行處理;(2)通過源文件解析器進行處理,按不同的格式進行解析處理;(3)通過http包處理器獲取js腳本返回的隱藏內(nèi)容;(4)隱藏內(nèi)容的匹配與處理;(5)最終數(shù)據(jù)處理整合;(6)線程管理器并發(fā)處理新的任務。
【文檔編號】G06F17/30GK105868412SQ201610272886
【公開日】2016年8月17日
【申請日】2016年4月28日
【發(fā)明人】徐飛
【申請人】焦點科技股份有限公司