對新聞客戶端的數(shù)據(jù)采集及解析的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種對新聞客戶端的數(shù)據(jù)采集及解析的方法及系統(tǒng),方法包括:根據(jù)獲取的新聞客戶端的數(shù)量創(chuàng)建線程,獲取CPU核心數(shù)量并將每個線程綁定于相應(yīng)的CPU核心;獲取每個新聞客戶端的欄目信息并獲取每個欄目的預(yù)置屬性文件,下載每個欄目的數(shù)據(jù)并生成采集節(jié)點,在將每個采集節(jié)點的數(shù)據(jù)存儲于對應(yīng)的采集隊列后再傳到解析單元;解析每個欄目的屬性信息并獲取每條新聞對應(yīng)的正文信息,形成每條新聞數(shù)據(jù)的解析節(jié)點并存于預(yù)置解析隊列中;將同一CPU核心上預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列,以便將預(yù)置輸出隊列中的數(shù)據(jù)傳送至預(yù)置數(shù)據(jù)庫,且基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。該方法可提高數(shù)據(jù)處理效率。
【專利說明】對新聞客戶端的數(shù)據(jù)采集及解析的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及一種對新聞客戶端的數(shù)據(jù)采集及解析的方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著移動互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,出現(xiàn)了很多種移動終端新聞客戶端(為便于描述本申請中可簡稱為新聞客戶端,比如搜狐新聞、今日頭條、百度新聞等),其中除了包括主流媒體的新聞客戶端,還包括聚合類的新聞客戶端。該些新聞客戶端的影響日益擴(kuò)大且發(fā)揮了積極的作用,與在互聯(lián)網(wǎng)上看新聞相比,新聞客戶端的新聞傳播速度更為及時,實時性更強(qiáng),有很多都是事件現(xiàn)場的親歷者在第一時間傳播而成為事件發(fā)展的源頭信息,此外,使用新聞客戶端的用戶參與度更高,因此傳播的范圍更廣。
[0003]目前,新聞監(jiān)管部門對于新聞客戶端發(fā)布的信息的監(jiān)管還處于人工監(jiān)管狀態(tài),不僅工作效率低,而且對于通過新聞客戶端傳播的負(fù)面信息很難及時發(fā)現(xiàn)及控制,此外,針對新聞客戶端數(shù)據(jù)監(jiān)管方面,在國內(nèi)外相關(guān)領(lǐng)域也未發(fā)現(xiàn)公開過更為有效的方案。
[0004]總之,現(xiàn)有技術(shù)中對于新聞客戶端的數(shù)據(jù)處理的方案還不夠理想。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供了一種對新聞客戶端的數(shù)據(jù)采集及解析的方法及系統(tǒng),采用多個CPU核心同步處理及多線程并行處理的方式對新聞客戶端的數(shù)據(jù)進(jìn)行采集及解析,可解決上述現(xiàn)有技術(shù)中的不足,可提高數(shù)據(jù)處理效率。
[0006]根據(jù)本發(fā)明的一方面,本發(fā)明提出了一種對新聞客戶端的數(shù)據(jù)采集及解析的方法,所述方法應(yīng)用于對新聞客戶端的并行數(shù)據(jù)采集及解析的系統(tǒng),包括:
根據(jù)獲取到的新聞客戶端的數(shù)量創(chuàng)建相同數(shù)量的線程,獲取系統(tǒng)的中央處理器CPU的核心數(shù)量并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,其中,每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù);
獲取每個新聞客戶端的欄目信息并獲取每個欄目對應(yīng)的預(yù)置屬性文件,根據(jù)獲取結(jié)果遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端所有欄目的采集節(jié)點中的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到解析單元,其中,所述欄目信息包括欄目名稱、欄目地址和欄目數(shù)量;
根據(jù)接收到的數(shù)據(jù)解析出每個欄目的屬性信息,并根據(jù)解析結(jié)果獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與所述正文信息做關(guān)聯(lián),形成每條新聞數(shù)據(jù)的解析節(jié)點,并將每個解析節(jié)點存儲于預(yù)置解析隊列中;
將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。
[0007]優(yōu)選地,根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,包括: 根據(jù)所述新聞客戶端的數(shù)量N及CPU的核心數(shù)量C取模,并將第η個線程綁定在第n%C個CPU的核心上,其中,N、C和η均為正整數(shù),N彡1,C彡I且η彡I。
[0008]優(yōu)選地,所述方法還包括:
獲取新聞客戶端的數(shù)量,具體為:通過讀取預(yù)置配置文件獲取新聞客戶端的數(shù)量;
獲取系統(tǒng)的中央處理器CPU的核心數(shù)量,具體為:根據(jù)預(yù)置程序自動獲取CPU的核心數(shù)量;
獲取每個新聞客戶端的欄目信息,具體為:通過讀取預(yù)置配置文件獲取每個新聞客戶端的欄目信息;
其中,所述預(yù)置配置文件中包括:新聞客戶端的數(shù)量、新聞客戶端的名稱、每個新聞客戶端對應(yīng)的欄目信息。
[0009]優(yōu)選地,所述方法還包括:
通過讀取預(yù)置配置文件獲取每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間;
若在所述預(yù)置持續(xù)時間段內(nèi)的任一 CPU核心的使用率超過預(yù)置使用率閾值,則將該CPU核心上綁定的預(yù)設(shè)數(shù)量的線程解除綁定,以便將解除綁定的線程重新綁定到低使用率的CPU核心上;
其中,所述預(yù)置配置文件中還包括:每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間。
[0010]優(yōu)選地,所述方法還包括:
獲取每個新聞客戶端的數(shù)據(jù)流量,根據(jù)獲取結(jié)果設(shè)置遍歷下載每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔,并將所述時間間隔存儲于預(yù)置配置文件中;
所述遍歷下載每個欄目中的數(shù)據(jù),包括:
通過讀取預(yù)置配置文件獲取所述時間間隔并根據(jù)所述時間間隔遍歷下載每個欄目中的數(shù)據(jù)。
[0011]根據(jù)本發(fā)明的另一方面,本發(fā)明還提出了對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng),包括:
線程管理單元,用于根據(jù)獲取到的新聞客戶端的數(shù)量創(chuàng)建相同數(shù)量的線程,獲取系統(tǒng)的中央處理器CPU的核心數(shù)量并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,其中,每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù);
采集單元,用于獲取每個新聞客戶端的欄目信息并獲取每個欄目對應(yīng)的預(yù)置屬性文件,根據(jù)獲取結(jié)果遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端所有欄目的采集節(jié)點中的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到解析單元,其中,所述欄目信息包括欄目名稱、欄目地址和欄目數(shù)量;
解析單元,用于根據(jù)接收到的數(shù)據(jù)解析出每個欄目的屬性信息,并根據(jù)解析結(jié)果獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與所述正文信息做關(guān)聯(lián),形成每條新聞數(shù)據(jù)的解析節(jié)點,并將每個解析節(jié)點存儲于預(yù)置解析隊列中;
存儲單元,用于將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。
[0012]優(yōu)選地,所述線程管理單元,具體用于:
根據(jù)所述新聞客戶端的數(shù)量N及CPU的核心數(shù)量C取模,并將第η個線程綁定在第n%C個CPU的核心上,其中,N、C和η均為正整數(shù),N彡1,C彡I且η彡I。
[0013]優(yōu)選地,所述系統(tǒng)還包括:
所述線程管理單元,具體用于:通過讀取預(yù)置配置文件獲取新聞客戶端的數(shù)量,且根據(jù)預(yù)置程序自動獲取CPU的核心數(shù)量;
所述采集單元,具體用于:通過讀取預(yù)置配置文件獲取每個新聞客戶端的欄目信息;其中,所述預(yù)置配置文件中包括:新聞客戶端的數(shù)量、新聞客戶端的名稱、每個新聞客戶端對應(yīng)的欄目信息。
[0014]優(yōu)選地,所述線程管理單元,還用于:
通過讀取預(yù)置配置文件獲取每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間;
若在所述預(yù)置持續(xù)時間段內(nèi)的任一 CPU核心的使用率超過預(yù)置使用率閾值,則將該CPU核心上綁定的預(yù)設(shè)數(shù)量的線程解除綁定,以便將解除綁定的線程重新綁定到低使用率的CPU核心上;
其中,所述預(yù)置配置文件中還包括:每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間。
[0015]優(yōu)選地,所述系統(tǒng)還包括:
設(shè)置單元,用于獲取每個新聞客戶端的數(shù)據(jù)流量,根據(jù)獲取結(jié)果設(shè)置遍歷下載每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔,并將所述時間間隔存儲于預(yù)置配置文件中;
所述采集單元,具體用于:
通過讀取預(yù)置配置文件獲取所述時間間隔并根據(jù)所述時間間隔遍歷下載每個欄目中的數(shù)據(jù)。
[0016]本發(fā)明提供的對新聞客戶端的數(shù)據(jù)采集及解析的方法及系統(tǒng)實施例,可根據(jù)新聞客戶端的數(shù)量創(chuàng)建多個線程并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,以使得每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù),再根據(jù)新聞客戶端的欄目信息及每個欄目的預(yù)置屬性文件遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端所有欄目的采集節(jié)點的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到解析單元,解析單元則根據(jù)解析出的每個欄目的屬性信息獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與正文信息做關(guān)聯(lián)并形成每條新聞數(shù)據(jù)的解析節(jié)點并將每個解析節(jié)點存儲于預(yù)置解析隊列中,然后將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則可將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。通過在上述線程分配、數(shù)據(jù)采集、數(shù)據(jù)解析、數(shù)據(jù)存儲及數(shù)據(jù)輸出過程中均采用多個CPU核心同步處理及多線程并行處理的方式,可提高整個系統(tǒng)的處理性能,并提高數(shù)據(jù)采集及解析的效率,進(jìn)而提高對新聞客戶端的數(shù)據(jù)進(jìn)行監(jiān)控和管理的效率。
[0017]當(dāng)然,實施本發(fā)明的任一產(chǎn)品并不一定需要同時達(dá)到以上所述的所有優(yōu)點。
【專利附圖】
【附圖說明】
[0018]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0019]圖1為本發(fā)明實施例提供的對新聞客戶端的數(shù)據(jù)采集及解析的方法的流程示意圖;
圖2為發(fā)明實施例提供的對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0020]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
[0021]參看圖1,為本發(fā)明實施例提供的對新聞客戶端的數(shù)據(jù)采集及解析的方法的流程示意圖。
[0022]在本實施例中,該方法應(yīng)用于對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng),該方法可具體包括如下步驟:
S101,根據(jù)獲取到的新聞客戶端的數(shù)量創(chuàng)建相同數(shù)量的線程,獲取系統(tǒng)的中央處理器CPU的核心數(shù)量并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上。
[0023]在系統(tǒng)硬盤的預(yù)設(shè)位置可預(yù)先存儲有預(yù)置配置文件,該預(yù)置配置文件中可包括新聞客戶端的數(shù)量、新聞客戶端的名稱、每個新聞客戶端對應(yīng)的欄目信息、每個CPU核心的預(yù)置使用率閾值、在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間、遍歷下載每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔等等信息。
[0024]在該步驟中,首先,可通過讀取預(yù)置配置文件獲取新聞客戶端的數(shù)量,并且創(chuàng)建與新聞客戶端相同數(shù)量的線程,以便將每個新聞客戶端分配到一個線程上,使得每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù)。
[0025]可根據(jù)預(yù)置程序自動獲取CPU的核心數(shù)量,并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,具體可為:
假設(shè)新聞客戶端的數(shù)量為N,CPU的核心數(shù)量為C,則可根據(jù)新聞客戶端的數(shù)量N及CPU的核心數(shù)量C取模,并將第η個線程綁定在第n%C個CPU的核心上,其中,N、C和η均為正整數(shù),N彡1,C彡I且η彡I。
[0026]比如,N為10,C為3,也就是新聞客戶端的數(shù)量為10個(比如第O個新聞客戶端至第9個新聞客戶端),對應(yīng)創(chuàng)建的線程數(shù)量也為10個(第O線程至第9線程),CPU的核心數(shù)量為3個(第O核至第2核),根據(jù)上述預(yù)置規(guī)則,則可將第O線程、第3線程、第6線程、第9線程綁定在第O核上;可將第I線程、第4線程、第7線程綁定在第I核上;可將第2線程、第5線程、第8線程綁定在第2核上,也就是通過計算線程號與核心數(shù)量的余數(shù),并將余數(shù)相同的線程綁定在同一 CPU核心上,以便以多個CPU核心同步處理及多線程并行處理的方式對多個新聞客戶端的數(shù)據(jù)進(jìn)行采集、分析等處理。
[0027]S102,獲取每個新聞客戶端的欄目信息并獲取每個欄目對應(yīng)的預(yù)置屬性文件,根據(jù)獲取結(jié)果遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端的每個欄目的采集節(jié)點中的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到對應(yīng)的解析單元。
[0028]在該步驟中,可先通過讀取預(yù)置配置文件獲取每個新聞客戶端的欄目信息,所述欄目信息可包括欄目名稱、欄目地址、欄目數(shù)量等等信息。比如,某一新聞客戶端包括8個欄目,則該新聞客戶端對應(yīng)的線程為對應(yīng)處理該8個欄目所包含的數(shù)據(jù)。
[0029]再獲取每個欄目對應(yīng)的預(yù)置屬性文件(比如可為json文件、xml文件、html文件等,此處以json文件為例進(jìn)行說明),可通過在預(yù)置位置找到每個欄目對應(yīng)的json文件,該json文件中可以預(yù)置格式存儲有每個欄目中的每條新聞的標(biāo)題、摘要、正文鏈接、時間戳等信息。
[0030]然后可根據(jù)上述獲取到的每個新聞客戶端的欄目信息及json文件遍歷下載每個欄目中數(shù)據(jù)并且每個欄目對應(yīng)生成一個采集節(jié)點。
[0031]將每個新聞客戶端中的每個欄目的所有采集節(jié)點中的數(shù)據(jù)都存儲于該新聞客戶端對應(yīng)的采集隊列中,再將該新聞采集隊列中的數(shù)據(jù)傳送到解析單元,其中,對于采集隊列的管理可采用CPU/MEM密集型算法優(yōu)化多線程隊列的讀寫操作,以保證讀寫操作的原子性。
[0032]S103,根據(jù)接收到的數(shù)據(jù)解析出每個欄目的屬性信息,并根據(jù)解析結(jié)果獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與所述正文信息做關(guān)聯(lián),形成每條新聞數(shù)據(jù)的解析節(jié)點,并將每個解析節(jié)點存儲于預(yù)置解析隊列中。
[0033]由于每個新聞客戶端的內(nèi)容格式可能都不同,因此每個新聞客戶端都可對應(yīng)設(shè)置一個解析子單元,并且可根據(jù)實際情況設(shè)置每個解析子單元的執(zhí)行策略,所有執(zhí)行策略的共同點,就是都需要將在采集步驟中獲取的json文件進(jìn)行解析以得到每個欄目的屬性信息,該屬性信息可包括每條新聞的標(biāo)題、摘要、正文鏈接、時間戳等。
[0034]然后再根據(jù)屬性信息中的每條新聞的正文鏈接下載對應(yīng)的正文信息,并根據(jù)每條新聞的預(yù)置標(biāo)識(ID)與所述正文信息做關(guān)聯(lián)形成每條新聞數(shù)據(jù)的解析節(jié)點,并可將每個解析節(jié)點存儲于預(yù)置解析隊列中。
[0035]S104,將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)督和管理。
[0036]可向每個CPU核心設(shè)置一個預(yù)置輸出隊列,可根據(jù)預(yù)置輸出隊列管理策略將同一個CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)預(yù)置輸出隊列接收到輸出指令時,則可將所有預(yù)置輸出隊列中的數(shù)據(jù)傳送到預(yù)置數(shù)據(jù)庫中。
[0037]其中,在預(yù)置輸出隊列中也可采用CPU/MEM密集型算法優(yōu)化多線程隊列的讀寫操作,以保證讀寫操作的原子性。
[0038]進(jìn)一步的,還可通過讀取預(yù)置配置文件獲取每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下的預(yù)置持續(xù)時間,若在所述預(yù)置持續(xù)時間段內(nèi)的任一 CPU核心的使用率超過預(yù)置使用率閾值,則將該CPU核心上綁定的預(yù)設(shè)數(shù)量的線程解除綁定,以便將解除綁定的線程重新綁定到低使用率的CPU核心上。
[0039]比如,可根據(jù)系統(tǒng)需要,每個預(yù)設(shè)時間(比如10秒),通過讀取預(yù)置配置文件可知第I核的預(yù)置使用率閾值為85%,在該使用率閾值下可持續(xù)的預(yù)置持續(xù)時間為10分鐘,則當(dāng)檢測到該第I核的使用率大于等于85%且持續(xù)時間大于等于10分鐘,則可認(rèn)為該第I核為超負(fù)載運行,此時,可將該第I核上預(yù)設(shè)數(shù)量的線程解除綁定(該預(yù)設(shè)數(shù)量可根據(jù)需要進(jìn)行設(shè)置,比如為I個線程),則可將該解除綁定的一個線程綁定到其他低利用率的CPU核心上,該低利用率也可通過上述方式檢測得到,以此可根據(jù)CPU核心的負(fù)載率,實時調(diào)整綁定于每個CPU核心上的線程數(shù)量,以實現(xiàn)負(fù)載均衡,進(jìn)而提高系統(tǒng)的穩(wěn)定性。
[0040]進(jìn)一步的,還可預(yù)先監(jiān)測并統(tǒng)計每個新聞客戶端的數(shù)據(jù)流量,根據(jù)每個新聞客戶端的數(shù)據(jù)流量來設(shè)置遍歷下載每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔,并將所述時間間隔存儲于預(yù)置配置文件中。
[0041]基于此,在S102中的遍歷下載每個欄目中的數(shù)據(jù),可具體為通過讀取預(yù)置配置文件獲取每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔,并根據(jù)該時間間隔遍歷下載每個新聞客戶端的每個欄目中的數(shù)據(jù),以便根據(jù)每個新聞客戶端的數(shù)據(jù)流量來設(shè)置遍歷下載的時間間隔,避免數(shù)據(jù)流量較小的新聞客戶端遍歷下載的操作過于頻繁,進(jìn)而避免系統(tǒng)做不必要的無用功。
[0042]本發(fā)明提供的對新聞客戶端的數(shù)據(jù)采集及解析的方法實施例,該方法可廣泛用于輿情監(jiān)測、新聞監(jiān)管等領(lǐng)域,可根據(jù)新聞客戶端的數(shù)量創(chuàng)建多個線程并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,以使得每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù),再根據(jù)新聞客戶端的欄目信息及每個欄目的預(yù)置屬性文件遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端所有欄目的采集節(jié)點的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到解析單元,解析單元則根據(jù)解析出的每個欄目的屬性信息獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與正文信息做關(guān)聯(lián)并形成每條新聞數(shù)據(jù)的解析節(jié)點并將每個解析節(jié)點存儲于預(yù)置解析隊列中,然后將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則可將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。通過在上述線程分配、數(shù)據(jù)采集、數(shù)據(jù)解析、數(shù)據(jù)存儲及數(shù)據(jù)輸出過程中均采用多個CPU核心同步處理及多線程并行處理的方式,提高整個系統(tǒng)的處理性能,并提高數(shù)據(jù)采集及解析的效率,進(jìn)而提高對新聞客戶端的數(shù)據(jù)進(jìn)行監(jiān)控和管理的效率。
[0043]對應(yīng)上述本發(fā)明對新聞客戶端的數(shù)據(jù)采集及解析的方法實施例,還提供了對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng)實施例,下面結(jié)合附圖進(jìn)行具體說明。
[0044]參看圖2,為本發(fā)明實施例提供的對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng)的結(jié)構(gòu)示意圖。
[0045]在本實施例中,該對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng),可包括:
線程管理單元21,用于根據(jù)獲取到的新聞客戶端的數(shù)量創(chuàng)建相同數(shù)量的線程,獲取系統(tǒng)的中央處理器CPU的核心數(shù)量并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上。
[0046]其中,每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù)。
[0047]采集單元22,用于獲取每個新聞客戶端的欄目信息并獲取每個欄目對應(yīng)的預(yù)置屬性文件,根據(jù)獲取結(jié)果遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端的每個欄目的采集節(jié)點中的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到對應(yīng)的解析單元。
[0048]其中,所述欄目信息包括欄目名稱、欄目地址和欄目數(shù)量等。
[0049]解析單元23,用于根據(jù)接收到的數(shù)據(jù)解析出每個欄目的屬性信息,并根據(jù)解析結(jié)果獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與所述正文信息做關(guān)聯(lián),形成每條新聞數(shù)據(jù)的解析節(jié)點,并將每個解析節(jié)點存儲于預(yù)置解析隊列中。
[0050]存儲單元24,用于將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。
進(jìn)一步的,所述線程管理單元21,可具體用于:
根據(jù)所述新聞客戶端的數(shù)量N及CPU的核心數(shù)量C取模,并將第η個線程綁定在第n%C個CPU的核心上,其中,N、C和η均為正整數(shù),N彡1,C彡I且η彡I。
[0051]進(jìn)一步的,所述線程管理單元21,還可具體用于:通過讀取預(yù)置配置文件獲取新聞客戶端的數(shù)量,且根據(jù)預(yù)置程序自動獲取CPU的核心數(shù)量;
所述采集單元22,可具體用于:通過讀取預(yù)置配置文件獲取每個新聞客戶端的欄目信息;
其中,所述預(yù)置配置文件中包括:新聞客戶端的數(shù)量、新聞客戶端的名稱、每個新聞客戶端對應(yīng)的欄目信息。
[0052]進(jìn)一步的,所述線程管理單元21,還可用于:
通過讀取預(yù)置配置文件獲取每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下的預(yù)置持續(xù)時間;若在所述預(yù)置持續(xù)時間段內(nèi)的任一 CPU核心的使用率超過預(yù)置使用率閾值,則將該CPU核心上綁定的預(yù)設(shè)數(shù)量的線程解除綁定,以便將解除綁定的線程重新綁定到低使用率的CPU核心上;
其中,所述預(yù)置配置文件中還包括:每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下的預(yù)置持續(xù)時間。
[0053]進(jìn)一步的,該系統(tǒng),還可包括:
設(shè)置單元,用于獲取每個新聞客戶端的數(shù)據(jù)流量,根據(jù)獲取結(jié)果設(shè)置遍歷下載每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔,并將獲取到的所述時間間隔存儲于預(yù)置配置文件中;
基于此,所述采集單元22,可具體用于:
通過讀取預(yù)置配置文件獲取所述時間間隔并根據(jù)所述時間間隔遍歷下載每個欄目中的數(shù)據(jù)。
[0054]本發(fā)明提供的對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng)實施例,該系統(tǒng)可廣泛用于輿情監(jiān)測、新聞監(jiān)管等領(lǐng)域,可根據(jù)新聞客戶端的數(shù)量創(chuàng)建多個線程并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,以使得每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù),再根據(jù)新聞客戶端的欄目信息及每個欄目的預(yù)置屬性文件遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端所有欄目的采集節(jié)點的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到解析單元,解析單元則根據(jù)解析出的每個欄目的屬性信息獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與正文信息做關(guān)聯(lián)并形成每條新聞數(shù)據(jù)的解析節(jié)點并將每個解析節(jié)點存儲于預(yù)置解析隊列中,然后將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則可將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。通過在上述線程分配、數(shù)據(jù)采集、數(shù)據(jù)解析、數(shù)據(jù)存儲及數(shù)據(jù)輸出過程中均采用多個CPU核心同步處理及多線程并行處理的方式,提高整個系統(tǒng)的處理性能,并提高數(shù)據(jù)采集及解析的效率,進(jìn)而提高對新聞客戶端的數(shù)據(jù)進(jìn)行監(jiān)控和管理的效率。
[0055]通過以上的實施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實施例或者實施例的某些部分所述的方法。
[0056]本說明書中的各個實施例均采用遞進(jìn)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)或系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。以上所描述的系統(tǒng)及系統(tǒng)實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0057]以上對本發(fā)明所提供的對新聞客戶端的數(shù)據(jù)采集及解析的方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本申請的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。
【權(quán)利要求】
1.一種對新聞客戶端的數(shù)據(jù)采集及解析的方法,其特征在于,所述方法應(yīng)用于對新聞客戶端的并行數(shù)據(jù)采集及解析的系統(tǒng),包括: 根據(jù)獲取到的新聞客戶端的數(shù)量創(chuàng)建相同數(shù)量的線程,獲取系統(tǒng)的中央處理器CPU的核心數(shù)量并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,其中,每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù); 獲取每個新聞客戶端的欄目信息并獲取每個欄目對應(yīng)的預(yù)置屬性文件,根據(jù)獲取結(jié)果遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端所有欄目的采集節(jié)點中的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到解析單元,其中,所述欄目信息包括欄目名稱、欄目地址和欄目數(shù)量; 根據(jù)接收到的數(shù)據(jù)解析出每個欄目的屬性信息,并根據(jù)解析結(jié)果獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與所述正文信息做關(guān)聯(lián),形成每條新聞數(shù)據(jù)的解析節(jié)點,并將每個解析節(jié)點存儲于預(yù)置解析隊列中; 將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。
2.如權(quán)利要求1所述的方法,其特征在于,根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,包括: 根據(jù)所述新聞客戶端的數(shù)量N及CPU的核心數(shù)量C取模,并將第η個線程綁定在第n%C個CPU的核心上,其中,N、C和η均為正整數(shù),N彡1,C彡I且η彡I。
3.如權(quán)利要求1或2所述的方法,其特征在于,還包括: 獲取新聞客戶端的數(shù)量,具體為:通過讀取預(yù)置配置文件獲取新聞客戶端的數(shù)量; 獲取系統(tǒng)的中央處理器CPU的核心數(shù)量,具體為:根據(jù)預(yù)置程序自動獲取CPU的核心數(shù)量; 獲取每個新聞客戶端的欄目信息,具體為:通過讀取預(yù)置配置文件獲取每個新聞客戶端的欄目信息; 其中,所述預(yù)置配置文件中包括:新聞客戶端的數(shù)量、新聞客戶端的名稱、每個新聞客戶端對應(yīng)的欄目信息。
4.如權(quán)利要求3所述的方法,其特征在于,還包括: 通過讀取預(yù)置配置文件獲取每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間; 若在所述預(yù)置持續(xù)時間段內(nèi)的任一 CPU核心的使用率超過預(yù)置使用率閾值,則將該CPU核心上綁定的預(yù)設(shè)數(shù)量的線程解除綁定,以便將解除綁定的線程重新綁定到低使用率的CPU核心上; 其中,所述預(yù)置配置文件中還包括:每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間。
5.如權(quán)利要求1所述的方法,其特征在于,還包括: 獲取每個新聞客戶端的數(shù)據(jù)流量,根據(jù)獲取結(jié)果設(shè)置遍歷下載每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔,并將所述時間間隔存儲于預(yù)置配置文件中; 所述遍歷下載每個欄目中的數(shù)據(jù),包括: 通過讀取預(yù)置配置文件獲取所述時間間隔并根據(jù)所述時間間隔遍歷下載每個欄目中的數(shù)據(jù)。
6.一種對新聞客戶端的數(shù)據(jù)采集及解析的系統(tǒng),其特征在于,包括: 線程管理單元,用于根據(jù)獲取到的新聞客戶端的數(shù)量創(chuàng)建相同數(shù)量的線程,獲取系統(tǒng)的中央處理器CPU的核心數(shù)量并根據(jù)預(yù)設(shè)規(guī)則將每個線程綁定在相應(yīng)的CPU核心上,其中,每個線程對應(yīng)處理一個新聞客戶端的數(shù)據(jù); 采集單元,用于獲取每個新聞客戶端的欄目信息并獲取每個欄目對應(yīng)的預(yù)置屬性文件,根據(jù)獲取結(jié)果遍歷下載每個欄目中的數(shù)據(jù)并生成相應(yīng)的采集節(jié)點,在將每個新聞客戶端所有欄目的采集節(jié)點中的數(shù)據(jù)存儲于該新聞客戶端對應(yīng)的采集隊列后再傳送到解析單元,其中,所述欄目信息包括欄目名稱、欄目地址和欄目數(shù)量; 解析單元,用于根據(jù)接收到的數(shù)據(jù)解析出每個欄目的屬性信息,并根據(jù)解析結(jié)果獲取每條新聞對應(yīng)的正文信息,再根據(jù)每條新聞的預(yù)置標(biāo)識與所述正文信息做關(guān)聯(lián),形成每條新聞數(shù)據(jù)的解析節(jié)點,并將每個解析節(jié)點存儲于預(yù)置解析隊列中; 存儲單元,用于將同一 CPU核心上的所有預(yù)置解析隊列中的數(shù)據(jù)存儲于對應(yīng)的預(yù)置輸出隊列中,當(dāng)接收到輸出指令時則將預(yù)置輸出隊列中的數(shù)據(jù)傳送于預(yù)置數(shù)據(jù)庫內(nèi),以便基于預(yù)置數(shù)據(jù)庫中的數(shù)據(jù)實現(xiàn)對新聞客戶端數(shù)據(jù)的監(jiān)管。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述線程管理單元,具體用于: 根據(jù)所述新聞客戶端的數(shù)量N及CPU的核心數(shù)量C取模,并將第η個線程綁定在第n%C個CPU的核心上,其中,N、C和η均為正整數(shù),N彡1,C彡I且η彡I。
8.如權(quán)利要求6或7所述的系統(tǒng),其特征在于,還包括: 所述線程管理單元,具體用于:通過讀取預(yù)置配置文件獲取新聞客戶端的數(shù)量,且根據(jù)預(yù)置程序自動獲取CPU的核心數(shù)量; 所述采集單元,具體用于:通過讀取預(yù)置配置文件獲取每個新聞客戶端的欄目信息; 其中,所述預(yù)置配置文件中包括:新聞客戶端的數(shù)量、新聞客戶端的名稱、每個新聞客戶端對應(yīng)的欄目信息。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述線程管理單元,還用于: 通過讀取預(yù)置配置文件獲取每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間; 若在所述預(yù)置持續(xù)時間段內(nèi)的任一 CPU核心的使用率超過預(yù)置使用率閾值,則將該CPU核心上綁定的預(yù)設(shè)數(shù)量的線程解除綁定,以便將解除綁定的線程重新綁定到低使用率的CPU核心上; 其中,所述預(yù)置配置文件中還包括:每個CPU核心的預(yù)置使用率閾值及在所述預(yù)置使用率閾值下可持續(xù)使用的預(yù)置持續(xù)時間。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,還包括: 設(shè)置單元,用于獲取每個新聞客戶端的數(shù)據(jù)流量,根據(jù)獲取結(jié)果設(shè)置遍歷下載每個新聞客戶端包含的每個欄目中的數(shù)據(jù)的時間間隔,并將所述時間間隔存儲于預(yù)置配置文件中; 所述采集單元,具體用于: 通過讀取預(yù)置配置文件獲取所述時間間隔并根據(jù)所述時間間隔遍歷下載每個欄目中的數(shù)據(jù)。
【文檔編號】G06F17/30GK104504006SQ201410754886
【公開日】2015年4月8日 申請日期:2014年12月11日 優(yōu)先權(quán)日:2014年12月11日
【發(fā)明者】魏永濤, 高峰, 魏永杰 申請人:廈門市美亞柏科信息股份有限公司