專利名稱:一種基于Web頁無限層采集方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)頁采集方法。
背景技術(shù):
網(wǎng)絡信息的采集通常是借助各種搜索引擎來完成的, 一個普通商用搜索引擎由搜索 器、索引器、檢索器和用戶接口等四部分構(gòu)成。 一般來說,搜索器就是一個稱為Robot 計算機程序的網(wǎng)絡機器人,它從某一初始頁面或站點的URL開始遍歷互聯(lián)網(wǎng)自動地發(fā)現(xiàn) 網(wǎng)頁信息,當進入某個超文本頁面時,它利用HTML語言的標記結(jié)構(gòu)來搜索信息和獲取指 向其他超文本的URL鏈接,通過一定的算法選擇下一個要訪問的站點繼而轉(zhuǎn)向另一個站 點繼續(xù)搜集信息。索引器的功能是理解搜索器所搜索的數(shù)據(jù)信息,從中抽取出索引項, 建立用于表示數(shù)據(jù)文檔以及生成數(shù)據(jù)庫的索引庫。檢索器的功能是根據(jù)用戶的査詢在索 引庫中快速檢出數(shù)據(jù)文檔,依據(jù)相關(guān)度評價對檢出的結(jié)果進行排序。用戶接口的功能是 輸入用戶的查詢并顯示檢索器檢出的查詢結(jié)果。從技術(shù)層面上來看,網(wǎng)頁采集技術(shù)與搜索引擎采用的技術(shù)有著很多相似之處。但是從 服務目的和方式來看,普通搜索引擎是面向所有互聯(lián)網(wǎng)用戶的,它力圖滿足所有用戶對 各種網(wǎng)絡信息的搜索需要。當用戶在使用普通搜索引擎的時候, 一般是向它提供檢索詞, 然后搜索引擎在其索引數(shù)據(jù)庫中檢出相應內(nèi)容并返回給用戶所需內(nèi)容的鏈接。而網(wǎng)頁采 集則是面向用戶的,它是為用戶在一個類別內(nèi)積累信息并最終形成知識而建立的。網(wǎng)頁 采集系統(tǒng)是一個實時抓取系統(tǒng),在得到用戶定義的模型后,直接到定義的模型網(wǎng)站上, 將模型網(wǎng)站上的信息資源抓取后全部返回給用戶而不僅僅是鏈接。采集的目的是為了服務于用戶,對于每個用戶來說,他們并不關(guān)心整個Web上的數(shù)據(jù)。 而只是其中的一小部分。事實上,這部分數(shù)據(jù)往往集中在很小的幾個或者一個主題領(lǐng)域 內(nèi)。面向用戶的網(wǎng)頁采集恰恰可以滿足這些用戶的需求,并且,由于采集的頁面數(shù)量較 少,頁面內(nèi)容也更有針對性,所以能夠更好的針對需要為用戶提供服務。網(wǎng)頁采集技術(shù)中的網(wǎng)頁釆集,主要是指通過web頁面之間的鏈接關(guān)系,從web上自動 的獲取頁面信息,并且隨著鏈接不斷向所需要的web頁面擴展的過程。采集程序是從一個網(wǎng)頁或多個網(wǎng)頁出發(fā),逐步遍歷Web Server上的文件。采集程序 首先解析網(wǎng)頁的HTML代碼,査找該頁面內(nèi)的超鏈接,然后通過遞歸和非遞歸兩種方式來 實現(xiàn)。遞歸方式,是在一個方法中調(diào)用自己本身的程序方式。這種方式在遍歷的工程中, 在沒有處理完一個網(wǎng)頁對應的URL情況下處理該網(wǎng)頁中某個URL。這種程序雖然簡單,但 是當一個URL本身的鏈接較多時,遞歸每次要將本次未完成的代碼壓進程序代碼棧,這樣程序在執(zhí)行時要耗費大量計算機資源。另外這種程序不能使用多線程技術(shù)。因此在高 效的采集程序中不采用此方式。非遞歸方式,使用隊列這種數(shù)據(jù)結(jié)構(gòu),當采集程序發(fā)現(xiàn)超鏈接后并不調(diào)用自己本身 而是把超鏈接加入到等待隊列中,當采集程序掃描完一個頁面后,會訪問隊列中的下一 個超鏈接地址。 、發(fā)明內(nèi)容本發(fā)明的目的是,提供一種面向用戶的非遞歸性網(wǎng)頁采集方法,利用本發(fā)明提供的 網(wǎng)頁釆集方法,能夠針對用戶需求,進行多層次鏈接分析,提取用戶所關(guān)心的內(nèi)容,高效 地實現(xiàn)網(wǎng)絡信息采集。為此,本發(fā)明采用如下的技術(shù)方案一種基于Web頁無限層采集方法,包括下列步驟(1) 規(guī)范網(wǎng)頁釆集的入口頁面地址StartURL;(2) 對該頁面上的每一個URL進行解析,若該URL是相對路徑,利用入口地址StartURL補 全,將其轉(zhuǎn)換成絕對路徑;(3) 判斷入口地址StartURL是否為該URL的上級,若是則啟用下行鏈采集,繼續(xù)向下擴展, 若不是,則停止擴展;在采集和擴展過程中,對于每個URL,循環(huán)匹配取出頁面中的 文字,并査找頁面上的鏈接,將鏈接上的文字以及鏈接所指向的網(wǎng)頁中的文字取出并 存儲,如此遍歷該網(wǎng)頁的所有鏈接,進行無限層網(wǎng)頁采集。作為優(yōu)選實施方式,上述采集方法中,步驟(2)和步驟(3)采用多線程的方法進 行網(wǎng)頁采集建立用于在采集過程中存放URL的四個隊列等待隊列、處理隊列、錯誤 隊列、完成隊列,每個隊列都保存著同一處理狀態(tài)的URL;在等待隊列中,URL等待被采 集程序處理,新發(fā)現(xiàn)的URL也被加入到這個隊列中;當開始采集處理時,URL被送到處理 隊列中;如果在解析網(wǎng)頁時出錯,URL將被送到錯誤隊列中;如果解析網(wǎng)頁沒有出錯,URL 將被送到完成隊列中。本發(fā)明的有益效果與普通采集比較,基于Web頁無限層采集與跨層存儲方法,其査 準率和查全率易于保證,頁面分析速度、分析層次更為清晰。在采集過程中無須對整個 Web進行遍歷,(獨創(chuàng)入口層管理模式)只需選擇唯一入口即可對網(wǎng)站相關(guān)的頁面進行自動 訪問分析,一方面回避了傳統(tǒng)信息采集系統(tǒng)單一,另一方面又為實現(xiàn)一次采集多次利用的 存儲結(jié)構(gòu)奠定基礎,能夠大大節(jié)省網(wǎng)絡帶寬減少服務器負載。
圖1本發(fā)明的網(wǎng)絡信息采集的總框架圖; 圖2本發(fā)明的網(wǎng)頁采集流程圖。
具體實施方式
本發(fā)明根據(jù)給定的網(wǎng)站的入口地址作為遍歷的起始網(wǎng)址。以Web頁采集模型為基準, 遍歷該Web頁中符合此模型的所有鏈接,并且隨著鏈接不斷向所需要的Web頁面擴展的 過程。區(qū)分這些鏈接所指向的Web頁特征,根據(jù)Web頁采集模型過濾噪音,進而進行多層 次鏈接分析,提取用戶所關(guān)心的內(nèi)容。開始進行網(wǎng)絡信息采集前,先給定網(wǎng)站入口地址,給定的網(wǎng)站的入口地址作為遍歷的 起始網(wǎng)址。當采集程序遇到某個網(wǎng)頁時,根據(jù)采集模型分析網(wǎng)頁,將相關(guān)鏈接加入到鏈 接隊列中;同時分析頁面內(nèi)容,將該網(wǎng)頁放入頁面庫中。程序框架如圖l。采集算法如下輸入入口地址;輸出用戶所需內(nèi)容步驟l:(l)根據(jù)輸入的入口地址,遍歷該Web頁中符合此模型的所有鏈接。判斷鏈接 地址是否為下行鏈,若是,則啟用下行鏈采集模型,繼續(xù)向下擴展;若不是,則停止擴 展。步驟2:采集程序?qū)⒌玫降木W(wǎng)頁交給鏈接分析器和內(nèi)容分析器;步驟3:對于內(nèi)容分析器而言,根據(jù)采集模型定義的規(guī)則,循環(huán)匹配取出頁面中的文 字。對于鏈接分析器而言,首先查找頁面上的鏈接,將鏈接上的文字以及鏈接所指向的 網(wǎng)頁中的文字取出。 ,本發(fā)明在網(wǎng)頁采集過程中用到了四個隊列,分別是等待隊列、處理隊列、錯誤隊列、 完成隊列。他們每個隊列都保存著同一處理狀態(tài)的URL。在等待隊列中,URL等待被Spider 程序處理,新發(fā)現(xiàn)的URL也被加入到這個隊列中;當Spider程序開始處理時,URL被送 到處理隊列中;如果在解析網(wǎng)頁時出錯,URL將被送到錯誤隊列中,該隊列中的URL不能 被移入其他隊列中。如果解析網(wǎng)頁沒有出錯,URL將被送到完成隊列中,該隊列中的URL 不能被移入其它隊列中。程序流程圖如圖2。在等待隊列中,URL等待被Spider程序處理,新發(fā)現(xiàn)的URL也被加入到這個隊列中; 當Spider程序開始處理時,URL被送到處理隊列中;如果在解析網(wǎng)頁時出錯,URL將被 送到錯誤隊列中,該隊列中的URL不能被移入其他隊列中。如果解析網(wǎng)頁沒有出錯,URL 將被送到完成隊列中,該隊列中,的URL不能被移入其它隊列中。程序流程圖如圖2。實踐證明,多線程機制,能提高Spider的效率。多線程使Spider在處理網(wǎng)頁時, 可請求、等待其它網(wǎng)頁。在編寫Spider程序時通常的做法是為每一個請求創(chuàng)建一個線程, 但為每個請求創(chuàng)建一個新線程的開銷很大;而且在請求很多時,在創(chuàng)建和銷毀線程上花 費的時間和消耗的系統(tǒng)資源要比花在處理網(wǎng)頁上的時間和資源更多。我們可用線程池來 解決這個問題。在線程池中,線程的數(shù)量己給定,線程池中線程的數(shù)量要合適,太少、 太多都會降低Spider的效率。線程池將給這些線程分配任務。當線程完成一個任務時,另一個任務將分配給它。這是因為線程的數(shù)量一定,不能再創(chuàng)建新的線程。本發(fā)明使用 線程池的方法如下(l)創(chuàng)建一個大小為n的線程池pool; (2)檢查等待對列中是否還有 未處理的網(wǎng)頁,如果沒有則結(jié)束,如果有則轉(zhuǎn)(3); (3)創(chuàng)建一個處理網(wǎng)頁的工作線程 Myspiderworker;檢査線程池中是否有空閑的線程,如果有,利用線程池執(zhí)行 Myspiderworker,轉(zhuǎn)(2),如果沒有,Myspiderworker等待直到線程池中有空閑的線程。頁面采集到本地后需要對其進行分析以提取用戶所關(guān)心的內(nèi)容。鏈接的提取是頁面分 析中的一個重要任務,必須保證完整、準確地從頁面中抽取出所有鏈接及相關(guān)數(shù)據(jù),包括 鏈接目的URL(統(tǒng)一資源標識符)、鏈接的說明文字等。由于HTML語法包含了多種鏈接方 式并仍在不斷擴充之中,在HTML語法分析器中對各種鏈接形式都必須加以識別和處理,并 對一個頁面上所有鏈接進行分類。參考國內(nèi)外已有的研究結(jié)果,將網(wǎng)頁的鏈接分成以下6類,主要以URL為判別標準(1) DOWNWARD(下行鏈)。目標頁面是當前頁面的下級頁面,通常是為當前頁面提供更詳 細的信息,可以看作是當前頁面的附屬子頁面。典型運用在主頁、索引頁面中。(2) UPWARD(上行鏈)。與DO麗WARD鏈相反,目標頁面是當前頁面的上級,也可能是跨了 好幾級。許多頁面都提供這樣的鏈接讓瀏覽者方便地返回上一級索引或直接返回主頁。(3jHORIZONTAL(水平鏈)。同一 目錄下的頁面間的鏈接被定義為水平鏈。有時WWW站 點內(nèi)部的層次不是非常清晰,有些頁面都不加區(qū)分地放在同一目錄下,無法直接區(qū)分出頁 面的上下級關(guān)系。此時只有將這些鏈接統(tǒng)統(tǒng)當作水平鏈,留待以后系統(tǒng)掌握了頁面及站點 的更多信息后再加以區(qū)別。(4) CROSSWISE(交叉鏈)。在前面三種鏈接關(guān)系中,兩個頁面都處在站點目錄中同一條 路徑上。當兩者分別位于兩個不同的分枝上時,就無法比較它們的上下級,稱之為交叉鏈。 一般說來這類鏈接只表明兩個頁面有關(guān),沒有明確的含義。(5) 0UTWARD(外向鏈)。鏈接指向其它站點中的頁面。此類鏈接所表示的頁面關(guān)系更加 模糊,它指向的頁面內(nèi)容可能與當前頁面毫無關(guān)聯(lián),在站點分析過程中此類鏈接所起的作 用不大。(6) FRM1E(框架鏈)。此類鏈接比較特殊,從外觀上看,目標頁面實際上嵌入到當前頁面 中,完全可以看作當前頁面的一部分,因而它所表示的關(guān)系是最緊密的。它另一個特殊的 方面在于該類鏈接的判定不是根據(jù)URL,而是在語法分析構(gòu)成'中抽取鏈接時就己經(jīng)確定 了。本發(fā)明基于上述6種鏈接的類型,提出的網(wǎng)頁鏈接判定邏輯的基本步驟如下(1) 規(guī)范入口地址StartURL,形如http:〃A. B. C/... /D。(2) 確定一級域名,即B.C。(3) 對該入口頁面采集模型上每一個URL進行分析。(4) 若該URL是相對路徑,用入口地址StartURL補全。(8)判斷入口地址StartURL是否為該URL的上級,若是則判定為DO麗WARD(下行鏈),啟用下行鏈采集模型,并可繼續(xù)向下擴展;若不是,則停止擴展。我們?yōu)g覽Web上的網(wǎng)頁時,會發(fā)現(xiàn)并不是所有的內(nèi)容都是我們所需要的。對于一個網(wǎng) 頁來說,上面有圖片,有版權(quán)信息,有新聞等等。但總體來說通常包含兩部分內(nèi)容,一 部分內(nèi)容體現(xiàn)的是網(wǎng)頁的主題信息,比如一張新聞網(wǎng)頁中的新聞部分,我們稱之為"主 題"內(nèi)容,它是該網(wǎng)頁的核心內(nèi)容,也是讀者最感興趣的內(nèi)容;另一部分則是與主題內(nèi) 容無關(guān)的導航條、廣告信息、版權(quán)信息以及調(diào)查問巻等內(nèi)容,我們稱之為"噪音"通常 分布在"主題"周圍,有時也夾雜在主題內(nèi)容中間。噪音內(nèi)容一般與"主題"內(nèi)容不相 關(guān),通常,他們鏈接到的網(wǎng)頁也與"主題"內(nèi)容不相關(guān)。網(wǎng)頁中的噪音內(nèi)容不僅給Web 上基于網(wǎng)頁內(nèi)容的應用系統(tǒng)帶來困難,如網(wǎng)頁分類系統(tǒng)、網(wǎng)頁信息抽取系統(tǒng);也給基于 網(wǎng)頁超鏈指向的應用系統(tǒng)帶來困難,如網(wǎng)頁評級系統(tǒng)。因此,如何快速準確地識別并清 除網(wǎng)頁內(nèi)的噪音是提高Web應用程序處理結(jié)果準確性的一項關(guān)鍵技術(shù),我們將該項技術(shù) 稱之為網(wǎng)頁凈化。首先,網(wǎng)頁凈化后,沒有了噪音內(nèi)容的干擾,Web應用程序可以以網(wǎng)頁 的主題內(nèi)容為處理對象,從而提高處理結(jié)果的準確性。其次,網(wǎng)頁凈化可以顯著簡化網(wǎng) 頁內(nèi)標簽結(jié)構(gòu)的復雜性并減小網(wǎng)頁的大小,從而節(jié)省后續(xù)處理過程的時間和空間開銷。 因此,網(wǎng)頁凈化已成為Web信息系統(tǒng)預處理環(huán)節(jié)中的一個必不可少的工作。在網(wǎng)頁凈化中為了區(qū)別一個網(wǎng)頁中的信息是噪聲還是主題內(nèi)容,首要的工作時將整 個網(wǎng)頁劃分成多個不同的塊。當前存在多種網(wǎng)頁分塊方法,比較流行的有基于D0M的劃 分方法,還有基于位置的劃分方法。將網(wǎng)頁劃分為多個塊之后,接下來的工作便是衡量 的每個塊的重要程度,不重要的便是噪聲。當前也存在多種衡量網(wǎng)頁塊價值的方法,大 都基于以下考慮對于一個網(wǎng)站來說,噪聲塊通常有共同的內(nèi)容和表現(xiàn)風格。本發(fā)明將 多個網(wǎng)頁之間共同的部分定義為模板,當網(wǎng)頁根據(jù)一些規(guī)則劃分成多個小塊之后,根據(jù) 定義好的模板來識別重復出現(xiàn)的網(wǎng)頁塊,并計算出現(xiàn)的次數(shù)。多次重復出現(xiàn)的網(wǎng)頁塊的 自然為噪聲塊。首先根據(jù)"TABLE"標簽將一個網(wǎng)頁分成幾個內(nèi)容塊;然后根據(jù)網(wǎng)頁塊的 簇的大小來判斷是否是噪聲。
權(quán)利要求
1.一種基于Web頁無限層采集方法,包括下列步驟(1)規(guī)范網(wǎng)頁采集的入口頁面地址StartURL;(2)對該頁面上的每一個URL進行解析,若該URL是相對路徑,利用入口地址StartURL補全,將其轉(zhuǎn)換成絕對路徑;(3)判斷入口地址StartURL是否為該URL的上級,若是則啟用下行鏈采集,繼續(xù)向下擴展,若不是,則停止擴展;在采集和擴展過程中,對于每個URL,循環(huán)匹配取出頁面中的文字,并查找頁面上的鏈接,將鏈接上的文字以及鏈接所指向的網(wǎng)頁中的文字取出并存儲,如此遍歷該網(wǎng)頁的所有鏈接,進行無限層網(wǎng)頁采集。
2. 根據(jù)權(quán)利要求l所述的基于Web頁無限層采集方法,其特征在于,步驟(2)和步驟G)采用多線程的方法進行網(wǎng)頁采集建立用于在采集過程中存放URL的四個隊列 等待隊列、處理隊列、錯誤隊列、完成隊列,每個隊列都保存著同一處理狀態(tài)的URL; 在等待隊列中,URL等待被采集程序處理,新發(fā)現(xiàn)的URL也被加入到這個隊列中;當 開始采集處理時,URL被送到處理隊列中;如果在解析網(wǎng)頁時出錯,URL將被送到錯 誤隊列中;如果解析網(wǎng)頁沒有出錯,URL將被送到完成隊列中。
全文摘要
本發(fā)明涉及一種基于Web頁無限層采集方法,包括下列步驟(1)規(guī)范網(wǎng)頁采集的入口頁面地址StartURL;(2)對該頁面上的每一個URL進行解析,若該URL是相對路徑,利用入口地址StartURL補全,將其轉(zhuǎn)換成絕對路徑;(3)判斷入口地址StartURL是否為該URL的上級,若是則啟用下行鏈采集,繼續(xù)向下擴展,若不是,則停止擴展;在采集和擴展過程中,對于每個URL,循環(huán)匹配取出頁面中的文字,并查找頁面上的鏈接,將鏈接上的文字以及鏈接所指向的網(wǎng)頁中的文字取出并存儲,如此遍歷該網(wǎng)頁的所有鏈接,進行無限層網(wǎng)頁采集。利用本發(fā)明提供的網(wǎng)頁采集方法,能夠針對用戶需求,進行多層次鏈接分析,提取用戶所關(guān)心的內(nèi)容,高效地實現(xiàn)網(wǎng)絡信息采集。
文檔編號H04L29/08GK101404666SQ20081015201
公開日2009年4月8日 申請日期2008年10月6日 優(yōu)先權(quán)日2008年10月6日
發(fā)明者聞 李, 袁青霞, 趙洪宇, 阮振中 申請人:趙洪宇