一種插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,特別是涉及一種插件式可配置的垂直領(lǐng) 域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,網(wǎng)絡(luò)上的信息浩如煙海。如何快速準(zhǔn)確地在信息的海洋 中尋找所需要的信息,成為人們關(guān)注的焦點(diǎn)問(wèn)題。對(duì)于巨量的網(wǎng)絡(luò)信息,不同領(lǐng)域的工作者 僅需關(guān)注與本領(lǐng)域相關(guān)的數(shù)據(jù),而不需要其它的數(shù)據(jù),他們往往對(duì)數(shù)據(jù)的質(zhì)量有較高的要 求。傳統(tǒng)的搜索引擎搜索意圖不明,結(jié)果精確度不高,數(shù)據(jù)非結(jié)構(gòu)化,難以提供準(zhǔn)確而干凈 的數(shù)據(jù)。
[0003] 一般的垂直領(lǐng)域的爬蟲是采用一定的算法針對(duì)某一特定領(lǐng)域做出的,能夠準(zhǔn)確地 獲取某個(gè)領(lǐng)域的信息,但對(duì)這個(gè)特定領(lǐng)域之外的其他領(lǐng)域的網(wǎng)頁(yè)抓取和信息提取卻無(wú)能為 力。
【發(fā)明內(nèi)容】
[0004] 發(fā)明目的:本發(fā)明的目的是提供一種能夠通過(guò)配置的方式實(shí)現(xiàn)多個(gè)領(lǐng)域的網(wǎng)頁(yè)抓 取和信息抽取,精確度高的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法。
[0005] 技術(shù)方案:為達(dá)到此目的,本發(fā)明采用以下技術(shù)方案:
[0006] 本發(fā)明所述的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,包括抓取階段和抽取 階段;其中,抓取階段包括抓取配置階段和抓取程序執(zhí)行階段,抽取階段包括抽取配置階段 和抽取程序執(zhí)行階段;
[0007] 抓取配置階段:配置抓取配置文件;
[0008] 抓取程序執(zhí)行階段:讀取抓取配置文件,進(jìn)行抓取工作,得到抓取數(shù)據(jù);
[0009] 抽取配置階段:包括配置基礎(chǔ)信息,以及根據(jù)所述抓取數(shù)據(jù)來(lái)配置抽取模式;
[0010] 抽取程序執(zhí)行階段:讀取抽取配置文件,對(duì)所述抓取數(shù)據(jù)進(jìn)行抽取工作,得到抽取 數(shù)據(jù)。
[0011] 進(jìn)一步,所述抓取配置階段包括以下的步驟:
[0012] 步驟(11):將所有的入口 URL放在單獨(dú)的配置文件中,并指定相應(yīng)的狀態(tài);
[0013] 步驟(12):配置抓取到的數(shù)據(jù)的存放路徑和抓取頁(yè)面的編碼方式;
[0014] 步驟(13):配置抓取到的URL的存儲(chǔ)設(shè)置;
[0015] 步驟(14):配置URL入口文件的路徑;
[0016] 步驟(15):配置抓取狀態(tài),用以定義下一個(gè)狀態(tài)的URL列表的抓取規(guī)則;
[0017] 步驟(16):判斷抓取狀態(tài)是否為終止?fàn)顟B(tài);如果不是,則進(jìn)入步驟(15)繼續(xù)配置 下一個(gè)狀態(tài);如果是,則進(jìn)入步驟(17);
[0018] 步驟(17):保存爬蟲的配置信息。
[0019] 進(jìn)一步,所述步驟(15)中的抓取規(guī)則通過(guò)抓取插件實(shí)現(xiàn),抓取插件采用XPath、正 則表達(dá)式或者自定義編程。
[0020] 進(jìn)一步,所述抓取程序執(zhí)行階段包括以下的步驟:
[0021] 步驟(21):讀取配置文件;
[0022] 步驟(22):獲取入口 URL列表,并將入口 URL列表加入到URL待抓取隊(duì)列中;
[0023] 步驟(23):判斷URL待抓取隊(duì)列是否為空;如果為空,則抓取結(jié)束;否則,執(zhí)行步 驟(24);
[0024] 步驟(24):從URL待抓取隊(duì)列中取出一個(gè)URL;
[0025] 步驟(25):判斷取出的URL是否已經(jīng)抓取過(guò);如果是,重新執(zhí)行步驟(23);否則, 執(zhí)行步驟(26);
[0026] 步驟(26):將取出的URL所指向的網(wǎng)頁(yè)進(jìn)行抓取并存儲(chǔ);
[0027] 步驟(27):將已抓取的URL添加到URL池中;
[0028] 步驟(28):進(jìn)入步驟(15)中的抓取狀態(tài),按照抓取規(guī)則得到新的URL列表;
[0029] 步驟(29):添加新的URL列表到URL待抓取隊(duì)列中,執(zhí)行步驟(23)。
[0030] 進(jìn)一步,所述抽取配置階段包括以下的步驟:
[0031] 步驟(31):所述的配置基礎(chǔ)信息,包括抓取到的數(shù)據(jù)的存儲(chǔ)路徑、待抽取的URL的 存儲(chǔ)路徑,以及抽取到的數(shù)據(jù)的存儲(chǔ)路徑;
[0032] 步驟(32):所述的根據(jù)抓取數(shù)據(jù)來(lái)配置抽取模式,包括從抓取的網(wǎng)頁(yè)中抽取的信 息,以及抽取規(guī)則。
[0033] 進(jìn)一步,所述步驟(32)中的抽取規(guī)則通過(guò)抽取插件實(shí)現(xiàn),抽取插件采用XPath、正 則表達(dá)式或者自定義編程。
[0034] 進(jìn)一步,所述抽取程序執(zhí)行階段包括以下的步驟:
[0035] 步驟(41):讀取配置文件;
[0036] 步驟(42):讀取待抽取的URL列表,將待抽取的URL列表添加到URL待抽取隊(duì)列 中;
[0037] 步驟(43):從URL待抽取隊(duì)列中讀取一個(gè)URL;
[0038] 步驟(44):從步驟(31)中所述的抓取到的數(shù)據(jù)的存儲(chǔ)路徑中檢索URL對(duì)應(yīng)的網(wǎng) 頁(yè);如果網(wǎng)頁(yè)存在,則執(zhí)行步驟(45);否則,執(zhí)行步驟(46);
[0039] 步驟(45):按照抽取規(guī)則抽取相應(yīng)內(nèi)容,并存儲(chǔ);
[0040] 步驟(46):判斷URL待抽取隊(duì)列是否為空;如果為空,則結(jié)束;否則,執(zhí)行步驟 (43) "
[0041] 有益效果:本發(fā)明能夠通過(guò)配置的方式實(shí)現(xiàn)多個(gè)領(lǐng)域的網(wǎng)頁(yè)抓取和信息抽取,并 且精確度高,既能解決傳統(tǒng)搜索引擎意圖不明、精確度不高的缺點(diǎn),又能實(shí)現(xiàn)多個(gè)領(lǐng)域的網(wǎng) 頁(yè)抓取和彳目息提取。
【附圖說(shuō)明】
[0042] 圖1為本發(fā)明的方法框圖;
[0043] 圖2為本發(fā)明的抓取程序執(zhí)行階段的流程圖;
[0044] 圖3為本發(fā)明的抽取程序執(zhí)行階段的流程圖。
【具體實(shí)施方式】
[0045] 下面結(jié)合附圖,通過(guò)【具體實(shí)施方式】來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。
[0046] 本發(fā)明的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法的框圖如圖1所示,包括抓 取階段和抽取階段;其中,抓取階段包括抓取配置階段和抓取程序執(zhí)行階段,抽取階段包括 抽取配置階段和抽取程序執(zhí)行階段。
[0047] 抓取配置階段:配置抓取配置文件;
[0048] 抓取程序執(zhí)行階段:讀取抓取配置文件,進(jìn)行抓取工作,得到抓取數(shù)據(jù);
[0049] 抽取配置階段:包括配置基礎(chǔ)信息,以及根據(jù)抓取數(shù)據(jù)來(lái)配置抽取模式;
[0050] 抽取程序執(zhí)行階段:讀取抽取配置文件,對(duì)抓取數(shù)據(jù)進(jìn)行抽取工作,得到抽取數(shù) 據(jù)。
[0051] 下面以一個(gè)【具體實(shí)施方式】來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。假如有一個(gè)需求,需 要分析某網(wǎng)站到云南旅游的線路價(jià)格分布。為了完成上述需求,開發(fā)者需要獲取此網(wǎng)站每 一條線路的價(jià)格、出游天數(shù)、團(tuán)期等信息。此時(shí)就可以按照本發(fā)明的方法,首先執(zhí)行抓取階 段,把網(wǎng)站的內(nèi)容抓取下來(lái),然后執(zhí)行抽取階段,把需要的線路ID、線路名稱、價(jià)格等信息抽 取出來(lái)。
[0052] 1、抓取配置階段
[0053] (1)配置入口 URL
[0054] 步驟(11):定位到此網(wǎng)站的云南旅游線路的列表頁(yè),如:http://www.tuniu.com/ g3300/tours-sh-0/list-h0/l/,只要通過(guò)下一頁(yè)的循環(huán)即可遍歷所有線路,可以使用該頁(yè) 作為整個(gè)抓取的入口頁(yè);將所有的入口 URL放在單獨(dú)的配置文件中,并指定相應(yīng)的狀態(tài);配 置方法如下:
[0055]
【主權(quán)項(xiàng)】
1. 一種插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,其特征在于:包括抓取階段和抽 取階段;其中,抓取階段包括抓取配置階段和抓取程序執(zhí)行階段,抽取階段包括抽取配置階 段和抽取程序執(zhí)行階段; 抓取配置階段:配置抓取配置文件; 抓取程序執(zhí)行階段:讀取抓取配置文件,進(jìn)行抓取工作,得到抓取數(shù)據(jù); 抽取配置階段:包括配置基礎(chǔ)信息,以及根據(jù)所述抓取數(shù)據(jù)來(lái)配置抽取模式; 抽取程序執(zhí)行階段:讀取抽取配置文件,對(duì)所述抓取數(shù)據(jù)進(jìn)行抽取工作,得到抽取數(shù) 據(jù)。
2. 根據(jù)權(quán)利要求1所述的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,其特征在于: 所述抓取配置階段包括以下的步驟: 步驟(11):將所有的入口 URL放在單獨(dú)的配置文件中,并指定相應(yīng)的狀態(tài); 步驟(12):配置抓取到的數(shù)據(jù)的存放路徑和抓取頁(yè)面的編碼方式; 步驟(13):配置抓取到的URL的存儲(chǔ)設(shè)置; 步驟(14):配置URL入口文件的路徑; 步驟(15):配置抓取狀態(tài),用以定義下一個(gè)狀態(tài)的URL列表的抓取規(guī)則; 步驟(16):判斷抓取狀態(tài)是否為終止?fàn)顟B(tài);如果不是,則進(jìn)入步驟(15)繼續(xù)配置下一 個(gè)狀態(tài);如果是,則進(jìn)入步驟(17); 步驟(17):保存爬蟲的配置信息。
3. 根據(jù)權(quán)利要求2所述的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,其特征在于: 所述步驟(15)中的抓取規(guī)則通過(guò)抓取插件實(shí)現(xiàn),抓取插件采用XPath、正則表達(dá)式或者自 定義編程。
4. 根據(jù)權(quán)利要求2所述的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,其特征在于: 所述抓取程序執(zhí)行階段包括以下的步驟: 步驟(21):讀取配置文件; 步驟(22):獲取入口 URL列表,并將入口 URL列表加入到URL待抓取隊(duì)列中; 步驟(23):判斷URL待抓取隊(duì)列是否為空;如果為空,則抓取結(jié)束;否則,執(zhí)行步驟 (24); 步驟(24):從URL待抓取隊(duì)列中取出一個(gè)URL ; 步驟(25):判斷取出的URL是否已經(jīng)抓取過(guò);如果是,重新執(zhí)行步驟(23);否則,執(zhí)行 步驟(26); 步驟(26):將取出的URL所指向的網(wǎng)頁(yè)進(jìn)行抓取并存儲(chǔ); 步驟(27):將已抓取的URL添加到URL池中; 步驟(28):進(jìn)入步驟(15)中的抓取狀態(tài),按照抓取規(guī)則得到新的URL列表; 步驟(29):添加新的URL列表到URL待抓取隊(duì)列中,執(zhí)行步驟(23)。
5. 根據(jù)權(quán)利要求1所述的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,其特征在于: 所述抽取配置階段包括以下的步驟: 步驟(31):所述的配置基礎(chǔ)信息,包括抓取到的數(shù)據(jù)的存儲(chǔ)路徑、待抽取的URL的存儲(chǔ) 路徑,以及抽取到的數(shù)據(jù)的存儲(chǔ)路徑; 步驟(32):所述的根據(jù)抓取數(shù)據(jù)來(lái)配置抽取模式,包括從抓取的網(wǎng)頁(yè)中抽取的信息, 以及抽取規(guī)則。
6. 根據(jù)權(quán)利要求5所述的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,其特征在于: 所述步驟(32)中的抽取規(guī)則通過(guò)抽取插件實(shí)現(xiàn),抽取插件采用XPath、正則表達(dá)式或者自 定義編程。
7. 根據(jù)權(quán)利要求5所述的插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,其特征在于: 所述抽取程序執(zhí)行階段包括以下的步驟: 步驟(41):讀取配置文件; 步驟(42):讀取待抽取的URL列表,將待抽取的URL列表添加到URL待抽取隊(duì)列中; 步驟(43):從URL待抽取隊(duì)列中讀取一個(gè)URL ; 步驟(44):從步驟(31)中所述的抓取到的數(shù)據(jù)的存儲(chǔ)路徑中檢索URL對(duì)應(yīng)的網(wǎng)頁(yè);如 果網(wǎng)頁(yè)存在,則執(zhí)行步驟(45);否則,執(zhí)行步驟(46); 步驟(45):按照抽取規(guī)則抽取相應(yīng)內(nèi)容,并存儲(chǔ); 步驟(46):判斷URL待抽取隊(duì)列是否為空;如果為空,則結(jié)束;否則,執(zhí)行步驟(43)。
【專利摘要】本發(fā)明公開了一種插件式可配置的垂直領(lǐng)域網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,包括抓取階段和抽取階段。其中,抓取階段包括抓取配置階段和抓取程序執(zhí)行階段,抽取階段包括抽取配置階段和抽取程序執(zhí)行階段。本發(fā)明能夠通過(guò)配置的方式實(shí)現(xiàn)多個(gè)領(lǐng)域的網(wǎng)頁(yè)抓取和信息抽取,并且精確度高,既能解決傳統(tǒng)搜索引擎意圖不明、精確度不高的缺點(diǎn),又能實(shí)現(xiàn)多個(gè)領(lǐng)域的網(wǎng)頁(yè)抓取和信息提取。
【IPC分類】G06F17-30
【公開號(hào)】CN104750804
【申請(qǐng)?zhí)枴緾N201510131253
【發(fā)明人】孟碩培, 程向飛
【申請(qǐng)人】南京途??萍加邢薰?br>【公開日】2015年7月1日
【申請(qǐng)日】2015年3月24日