Web領(lǐng)域分布式實(shí)時(shí)抽取系統(tǒng)的制作方法【專利摘要】本申請(qǐng)?zhí)岢隽艘环N新的對(duì)各大網(wǎng)站進(jìn)行數(shù)據(jù)抽取的深度數(shù)據(jù)挖掘方法,該方法能夠?qū)崿F(xiàn)全天候,自動(dòng)化的定向抽取所指向的網(wǎng)站,采用的語(yǔ)言為css/html或jquery格式,其中的自動(dòng)化模塊能夠根據(jù)一定的頻率對(duì)存入其中列表的網(wǎng)站進(jìn)行數(shù)據(jù)抽取,可以設(shè)定抽取次數(shù)或者無(wú)限制自動(dòng)循環(huán),另一個(gè)分布式爬蟲(chóng)模塊,能夠根據(jù)一定的頻率對(duì)網(wǎng)站進(jìn)行抽取,可以進(jìn)行多層次抽取,抽取后的內(nèi)容經(jīng)過(guò)過(guò)濾層,通過(guò)對(duì)抽取內(nèi)容進(jìn)行缺失值補(bǔ)缺,一定的過(guò)濾值進(jìn)行過(guò)濾,最后根據(jù)設(shè)置情況將結(jié)果存入當(dāng)?shù)鼗蛘哌h(yuǎn)程數(shù)據(jù)庫(kù)之中,本系統(tǒng)可以實(shí)現(xiàn)分布式的,全天候的自動(dòng)化式的數(shù)據(jù)抽取和集成?!緦@f(shuō)明】Web領(lǐng)域分布式實(shí)時(shí)抽取系統(tǒng)所屬
技術(shù)領(lǐng)域:
[0001]本發(fā)明涉及一種DeepWeb數(shù)據(jù)集成方法及系統(tǒng),特別涉及一種基于分布式的數(shù)據(jù)集成方法及系統(tǒng)?!?br>背景技術(shù):
】[0002]當(dāng)前傳統(tǒng)的搜索引擎比如baidu,google,僅能夠搜索到淺層次的數(shù)據(jù),目前網(wǎng)絡(luò)上存在大量的在網(wǎng)站內(nèi)部的數(shù)據(jù),比如門(mén)戶網(wǎng)站,論壇,貼吧等,稱之為De印Web,這些數(shù)據(jù)無(wú)法被傳統(tǒng)的搜索引擎檢索到。為了克服傳統(tǒng)的搜索引擎不能深度挖掘數(shù)據(jù)的不足,系統(tǒng)采用最新的技術(shù),發(fā)明一種方法把各網(wǎng)站內(nèi)部的所需要抽取的數(shù)據(jù)抽取出來(lái),集成到自己網(wǎng)站,然后提供給用戶進(jìn)行檢索,方便用戶上網(wǎng)查詢?!?br/>發(fā)明內(nèi)容】[0003]本發(fā)明提供了一種分布式的向各大網(wǎng)站數(shù)據(jù)進(jìn)行自動(dòng)化地?cái)?shù)據(jù)抽取和集成系統(tǒng)與方法,本發(fā)明包括兩個(gè)模塊。[0004]第一個(gè)模塊是自動(dòng)化模塊:[0005]1.抓取網(wǎng)站列表模塊[0006]2.抓取頻率設(shè)置模塊[0007]第二個(gè)模塊是分布式網(wǎng)絡(luò)爬蟲(chóng)模塊:[0008]1.頻率設(shè)置模塊[0009]2.抓取準(zhǔn)備模塊[0010]3.抓取內(nèi)容模塊[0011]3.1過(guò)濾器內(nèi)容模塊[0012]3.2第一層內(nèi)容抓取實(shí)施模塊[0013]3.3第二層數(shù)據(jù)抓取名單[0014]3.4第二層內(nèi)容抓取實(shí)施模塊[0015]4.數(shù)據(jù)庫(kù)設(shè)置模塊[0016]4.1本地?cái)?shù)據(jù)庫(kù)設(shè)置模塊[0017]4.2遠(yuǎn)程數(shù)據(jù)庫(kù)設(shè)置模塊[0018]本發(fā)明提供的數(shù)據(jù)抽取方法,包括以下幾個(gè)步驟:[0019](I)數(shù)據(jù)庫(kù)配置:設(shè)置好主機(jī)端和分布式爬蟲(chóng)端的數(shù)據(jù)庫(kù)配置,使主機(jī)端的數(shù)據(jù)庫(kù)服務(wù)器能夠接受分布式爬蟲(chóng)機(jī)器端的進(jìn)行的遠(yuǎn)程數(shù)據(jù)存儲(chǔ)和更新。[0020](2)程序執(zhí)行自動(dòng)化模塊:[0021]1.程序讀取抓取網(wǎng)站列表名單,以從中提取所需要爬取網(wǎng)站的配置文件列表;[0022]2.程序讀取頻率設(shè)置,包括是否進(jìn)行永久不停的循環(huán)式抓取,如果不循環(huán),需要賺取的次數(shù),及每次抓取之間休息的間隔時(shí)間;[0023]3.程序?qū)α斜碇械囊粋€(gè)網(wǎng)站進(jìn)行抓取;[0024]4.程序?qū)⒘斜碇兴芯W(wǎng)站的抓取執(zhí)行完畢之后,休息一段時(shí)間,再對(duì)該列表的網(wǎng)站進(jìn)行抓??;[0025]5.程序?qū)?中所提出的,可能進(jìn)行不停止的抓取,也有可能抓取幾次就停止了;[0026](3)程序執(zhí)行分布式爬蟲(chóng)模塊:[0027]1.程序讀取單個(gè)網(wǎng)站的配置信息,包括抓取頻率,抓取準(zhǔn)備,抓取內(nèi)容,數(shù)據(jù)庫(kù)配置;[0028]2.程序按照抓取頻率模塊中定義的,讀取開(kāi)始頁(yè)面.每個(gè)階段抓取的步長(zhǎng),每個(gè)階段抓取的步數(shù),循環(huán)的每個(gè)階段的次數(shù),每個(gè)循環(huán)里面需要停頓的時(shí)間;[0029]3.程序讀取抓取準(zhǔn)備模塊,模擬用戶使用http或https向網(wǎng)站發(fā)送請(qǐng)求;[0030]4.程序讀取抓取內(nèi)容:通過(guò)對(duì)返回信息進(jìn)行一次數(shù)據(jù)處理,主要是第一層數(shù)據(jù)抓??;[0031]5.程序讀取抓取內(nèi)容:對(duì)網(wǎng)站進(jìn)行第二層數(shù)據(jù)抓??;[0032]6.程序?qū)ψト〉膬?nèi)容進(jìn)行篩選:包括補(bǔ)上缺失值,過(guò)濾掉一些冗余內(nèi)容等;[0033]7.程序根據(jù)數(shù)據(jù)庫(kù)配置文件,將內(nèi)容保存在本地?cái)?shù)據(jù)庫(kù)或者服務(wù)器端的數(shù)據(jù)庫(kù)里;[0034]8.程序休息一段時(shí)間,根據(jù)頻率設(shè)置中的步數(shù)和步寬進(jìn)行下一個(gè)網(wǎng)站的爬取;[0035]9.當(dāng)步數(shù)達(dá)到預(yù)定值時(shí),根據(jù)頻率設(shè)置中的頻次,對(duì)該網(wǎng)站進(jìn)行再一次的抓取,起點(diǎn)為剛剛結(jié)束的網(wǎng)頁(yè)。[0036]本發(fā)明的有益效果是可以把各網(wǎng)站內(nèi)部的所需要抽取的數(shù)據(jù)抽取出來(lái),集成到自己網(wǎng)站,然后提供給用戶進(jìn)行檢索,方便用戶上網(wǎng)查詢?!靖綀D說(shuō)明】[0037]圖1是根據(jù)本發(fā)明的數(shù)據(jù)集成系統(tǒng)的系統(tǒng)架構(gòu)圖。[0038]圖2是本發(fā)明自動(dòng)化模塊的架構(gòu)圖。[0039]圖3是本發(fā)明自動(dòng)化模塊的流程圖。[0040]圖4是本發(fā)明分布式爬蟲(chóng)的各內(nèi)部模塊圖。[0041]圖5是本發(fā)明分布式爬蟲(chóng)的流程圖?!揪唧w實(shí)施方式】[0042]一、數(shù)據(jù)庫(kù)設(shè)置模塊:[0043](I)在服務(wù)器端的數(shù)據(jù)庫(kù)服務(wù)器增加命令行,使之允許分布式爬蟲(chóng)所在電腦的ip,以及其所擁有的一個(gè)特定的用戶名對(duì)該服務(wù)器端所在數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行的遠(yuǎn)程數(shù)據(jù)寫(xiě)入與更新。[0044](2)在爬蟲(chóng)端電腦,遠(yuǎn)程數(shù)據(jù)庫(kù)登陸模塊,設(shè)定好需要登陸的遠(yuǎn)程服務(wù)器端,其電腦的IP地址及數(shù)據(jù)庫(kù)端口,需要登陸的數(shù)據(jù)庫(kù)的名字,需要使用的用戶名,即第I條中的服務(wù)器端允許這個(gè)特定的用戶名,需要登陸的密碼,需要登陸的那張表格名稱。[0045](3)在爬蟲(chóng)端電腦,本地?cái)?shù)據(jù)庫(kù)登陸模塊,設(shè)定好需要登陸的本地電腦的IP地址及數(shù)據(jù)庫(kù)端口,需要登陸的數(shù)據(jù)庫(kù)的名字,需要使用的用戶名,一般是Root,需要登陸的密碼,需要登陸的那張表格的名稱。[0046]二、程序執(zhí)行自動(dòng)化裝置設(shè)置模塊:[0047]設(shè)置好需要自動(dòng)化列表文件list,xml,[0048]1.site:需要爬取的網(wǎng)站的配置文件名及位置[0049]2.for_ever_;run:確定是否進(jìn)行永久循環(huán)狀態(tài)進(jìn)行抓取[0050]3.query_frequence:如果不進(jìn)行永久循環(huán)狀態(tài)的抓取,則抓取的次數(shù)[0051]4.sleep_time:每次抓取完個(gè)列表的網(wǎng)站之后,進(jìn)彳丁的睡眠時(shí)間[0052]三、程序執(zhí)行分布式爬蟲(chóng)模塊:[0053](1)設(shè)置好爬蟲(chóng)的爬取頻率[0054]1.start_page:爬蟲(chóng)開(kāi)始抓取的第一個(gè)頁(yè)面[0055]2.query_frequence:抓取頁(yè)面的頻率[0056]3.query_step_interval:—個(gè)網(wǎng)頁(yè)抓取后向下一個(gè)需要抓取的頁(yè)面邁進(jìn)的頁(yè)面間隔[0057]4.query_step_times:每個(gè)輪次抓取頁(yè)面的邁進(jìn)的步驟數(shù)目[0058]5.sleep_time:每個(gè)輪次抓取之后的休息時(shí)間[0059](2)設(shè)置好爬蟲(chóng)的準(zhǔn)備階段:[0060]1.charset:抓取網(wǎng)站的編碼格式[0061]2.query_page_front:抓取鏈接的前端,不包含頁(yè)碼的那部分[0062]3.query_page_end:抓取鏈接的后端,不包含頁(yè)碼的那部分[0063](3)設(shè)置好爬蟲(chóng)的抽取內(nèi)容:[0064]1.filter_list:過(guò)濾器單子[0065]node:每一個(gè)需要放入數(shù)據(jù)庫(kù)表單的節(jié)點(diǎn)[0066]name:放入表單的名稱[0067]default_value:如果值缺失,采用該值填充缺失值[0068]regex:使用正則語(yǔ)言對(duì)所取出的值進(jìn)行過(guò)濾,將包含的內(nèi)容過(guò)濾掉.[0069]2.query_level_nodes:需要抓取的內(nèi)容的節(jié)點(diǎn)單子[0070]first_level_nodes:第一層需要抓取的節(jié)點(diǎn)單子[0071]top_node:所需要抽取的節(jié)點(diǎn)的最頂層的路徑,用css/html,jquery的語(yǔ)法描寫(xiě)[0072]common_path:基礎(chǔ)路徑,針對(duì)某些抽取的信息為相對(duì)路徑的情況,該節(jié)點(diǎn)的內(nèi)容可以將相對(duì)路徑補(bǔ)全為絕對(duì)路徑[0073]nodes:即需要抽取內(nèi)容的節(jié)點(diǎn)集,[0074]node:每個(gè)需要抽取信息的節(jié)點(diǎn)[0075]name:需要抽取內(nèi)容的名字[0076]select:需要抽取內(nèi)容的select的相對(duì)路徑,每層用$分隔開(kāi)[0077]attribute:需要抽取內(nèi)容的attribute部分[0078]text:需要抽取node的text部分是否需要被抽取[0079]seconde_level_node_list:需要進(jìn)行抓取的第二層次節(jié)點(diǎn)的名單[0080]node:需要進(jìn)行第二次抓取的節(jié)點(diǎn)名單,從第一層抓取節(jié)點(diǎn)的名單里選取[0081]seconde_level_nodes:需要進(jìn)行抓取的第二層次節(jié)點(diǎn)名單[0082]top_seconde_level_node:第二層的需要抓取的頂層節(jié)點(diǎn)[0083]nodes:需要抓取的第二層節(jié)點(diǎn)集[0084]node:第二層節(jié)點(diǎn)[0085]name:需要抽取的node的名字[0086]select:需要抽取的node的select路徑[0087]attribute:需要抽取的node的attribute[0088]text:需要抽取的node的text部分[0089](4)設(shè)置好數(shù)據(jù)庫(kù)配置內(nèi)容:[0090]1.本地?cái)?shù)據(jù)庫(kù)配置:[0091]database_connect:是否連接本地?cái)?shù)據(jù)庫(kù)[0092]hostname:連接數(shù)據(jù)庫(kù)的host[0093]database_name:連接數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)名字[0094]userid:連接數(shù)據(jù)庫(kù)的用戶名[0095]password:連接數(shù)據(jù)庫(kù)的密碼[0096]table_name:需要寫(xiě)入數(shù)據(jù)的表格的名稱[0097]2.遠(yuǎn)程數(shù)據(jù)庫(kù)配置:[0098]remote_database_connect:是否登陸遠(yuǎn)程數(shù)據(jù)庫(kù)[0099]remote_hostname:登陸的遠(yuǎn)程數(shù)據(jù)庫(kù)的host:[0100]remote_database_name:登陸的遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)名字[0101]remote_userid:登陸遠(yuǎn)程數(shù)據(jù)庫(kù)使用的用戶名[0102]remote_password:登陸遠(yuǎn)程數(shù)據(jù)庫(kù)使用的密碼[0103]remote_table_name:登陸遠(yuǎn)程數(shù)據(jù)庫(kù)里面的特定表格名?!局鳈?quán)項(xiàng)】1.Web領(lǐng)域分布式實(shí)時(shí)數(shù)據(jù)抽取系統(tǒng),其特征在于,包括以下步驟:讀取需要抽取的網(wǎng)站名列表里面的信息;根據(jù)信息,根據(jù)一定的頻率,對(duì)網(wǎng)站(論壇,門(mén)戶網(wǎng)站等)進(jìn)行數(shù)據(jù)抽取,采用的語(yǔ)言css/html或者jquery格式;對(duì)抽取的內(nèi)容進(jìn)行一次處理,包括缺失值補(bǔ)缺,過(guò)濾器設(shè)置等;根據(jù)配置文件,將處理后的內(nèi)容傳送到本地或者遠(yuǎn)程數(shù)據(jù)庫(kù)中。2.根據(jù)權(quán)利要求1所述的一種數(shù)據(jù)集成方法,需要抓取的網(wǎng)站名列表寫(xiě)在construct,xml配置文件中,所要抓取的網(wǎng)站的配置文件都按照一個(gè)一個(gè)列表寫(xiě)在list,xml中,其中包括site存儲(chǔ)每個(gè)網(wǎng)站配置文件construct,xml的路徑。3.根據(jù)權(quán)利要求1所述的一種爬蟲(chóng)頻率調(diào)節(jié)方法,是否采用循環(huán)制,如果不采用將設(shè)置好抓取的次數(shù)和每次抓取的休息時(shí)間。4.根據(jù)權(quán)利要求2所述的頻率調(diào)整模塊,包括開(kāi)始頁(yè)面的設(shè)置開(kāi)始頁(yè)面,每次抓取的步長(zhǎng),每輪抓取的步數(shù),抓取輪次的數(shù)目,以及每次抓取完后需要一定的休息時(shí)間。5.根據(jù)權(quán)利要求2所述的抓取準(zhǔn)備階段,所抓取網(wǎng)站的編碼方式將抓取網(wǎng)址前段,后段和頁(yè)碼拼接成抓取鏈接的方式。6.根據(jù)權(quán)利要求2所述的內(nèi)容抽取細(xì)則方面,第一層,第二層內(nèi)容的抓取中設(shè)置top_node,其所代表路徑select用$分隔。7.根據(jù)權(quán)利要求2所述的內(nèi)容抽取細(xì)則,每個(gè)節(jié)點(diǎn),包含有name,select;attribute,text四個(gè)選項(xiàng),其中select指明用于select的路徑,其符合css/html或jquery格式,每層的路徑采用$分隔,attribute中填寫(xiě)需要抽取的node的名字即可,text說(shuō)明是否選用text〇8.根據(jù)權(quán)利要求2所述的內(nèi)容抽取細(xì)則,第二層抽取的節(jié)點(diǎn)的名單在第二層節(jié)點(diǎn)名單里面。9.根據(jù)權(quán)利要求3所述,抽取上來(lái)的第一第二層節(jié)點(diǎn)的內(nèi)容需要經(jīng)過(guò)一個(gè)過(guò)濾機(jī)構(gòu),包含該節(jié)點(diǎn)的名字,缺失時(shí)自動(dòng)填充值,用于補(bǔ)上該值缺失時(shí)的一個(gè)自動(dòng)填充值,過(guò)濾內(nèi)容,即抽取上來(lái)的值進(jìn)行過(guò)濾,將需要被濾掉的值用regex格式寫(xiě)在該條框里。10.根據(jù)權(quán)利要求4所述的數(shù)據(jù)庫(kù)配置細(xì)則,分為兩個(gè)部分,一個(gè)是遠(yuǎn)程數(shù)據(jù)庫(kù)配置,包括是否登陸遠(yuǎn)程數(shù)據(jù)庫(kù),遠(yuǎn)程數(shù)據(jù)庫(kù)的名字,遠(yuǎn)程的主機(jī),遠(yuǎn)程的用戶名,遠(yuǎn)程的密碼,遠(yuǎn)程的表格名,另一個(gè)是本地?cái)?shù)據(jù)庫(kù)配置,包括是否登陸本地?cái)?shù)據(jù)庫(kù),本地主機(jī),本地?cái)?shù)據(jù)庫(kù)名字,用戶名,密碼,表格名?!疚臋n編號(hào)】G06F17/30GK105988994SQ201410842253【公開(kāi)日】2016年10月5日【申請(qǐng)日】2015年2月6日【發(fā)明人】劉挺,孟小峰【申請(qǐng)人】北京詢達(dá)數(shù)據(jù)科技有限公司