專利名稱:一種提取網頁數據的方法和Web爬蟲系統的制作方法
技術領域:
本發(fā)明一般涉及數據分析,更具體的說,涉及利用Web爬蟲(Crawler)從網頁中提取數據的方法與系統。
背景技術:
隨著計算機和互聯網技術的發(fā)展,搜索引擎已經成為Web客戶機(例如,計算機)的使用者獲取信息的重要方式。一般,用戶通過向搜索引擎提供其感興趣的關鍵字,由搜索引擎根據用戶提供的關鍵字生成頁面,來幫助用戶發(fā)現和訪問新的“統一資源地址”(URL)。為了達成這一目標,搜索引擎通過索引器檢索事先建立好的索引數據結構生成提供給用戶的關鍵字結果頁面,并使用Web爬蟲(或稱之為“蜘蛛”、“機器人”)定期的訪問通過URL定位的網頁資源,提取出其中的文本信息和其他相關網頁屬性,并存儲該信息以使得索引器可以處理被檢索的數據。前述的索引器讀取這些文檔,并根據每個文檔所包含的這些關鍵字和該文檔的其他屬性來創(chuàng)建有優(yōu)先級的索引。不同的搜索引擎通常使用專用算法來建立索引,以便于查詢返回有意義的結果。
因此,Web爬蟲對于搜索引擎的操作而已至關重要。但是,現有的Web爬蟲僅能提取出Web頁面中的純文字信息,這種技術限制導致了很多搜索引擎優(yōu)化(SEO)技巧的產生,例如在網頁中嵌入瀏覽者不可見的文本,或者根據爬蟲提供的身份標識(UserAgent),進行特殊處理,典型的,當對方網站發(fā)現是搜索引擎爬蟲時,提供一種頁面數據,發(fā)現是一般的瀏覽器訪問時,提供一套頁面;此外,由于將網頁整體作為一整體文本文件,在處理過程中丟失了網頁元素位置信息所隱含的語義信息,導致在搜索過程中很難提取出有語義信息的數據項。以一個工作相關的垂直搜索網站,地點是其搜索內容中重要的維度,而傳統的爬蟲只能將網頁作為一個文本文件,導致很難將工作地點的信息與其他網頁中出現的表示地點的名詞用普遍適用的方法分離;額外的,隨著Web技術的發(fā)展,以AJAX(Asynchronous JavaScript+XML)為代表的腳本動態(tài)網頁技術得到了越來越多的廣泛的應用。AJAX技術通過JavaScript腳本在Web客戶端的Web頁面處理部件(一般稱之為“瀏覽器”)中執(zhí)行,在腳本中通過操作“文檔對象模型”DOM以實現動態(tài)修改網頁內容的效果?,F有的爬蟲無法獲取由腳本動態(tài)生成的網頁內容。
由此可見,提供一種通用的支持AJAX技術的提取網頁數據的方法和Web爬蟲系統對于改進搜索引擎的用戶體驗,提高搜索引擎的查全率有幫助。
發(fā)明內容
本發(fā)明的目的,在于為搜索引擎系統或其他由Web頁面提取需求的系統,提供通用的數據提取方法,用于解決現有Web爬蟲系統無法抓取以AJAX為代表的使用腳本生成網頁內容的網頁。同時,本發(fā)明公開的方法和系統還可以用于數據標引,這項技術主要應用在為某些特定Web內容提供的搜索引擎,例如用于檢索工作職位信息的搜索引擎等。
為提供對本發(fā)明的一些方面的基本理解,下文呈現了本發(fā)明的簡化的描述。此描述不是本發(fā)明的廣泛的縱覽。它并不意在識別本發(fā)明的關鍵/緊要的部分或勾畫出本發(fā)明的范圍。它唯一的目的是用簡化的形式來呈現本發(fā)明的一些概念,作為以后提出的更加詳細的說明的序言。
本發(fā)明一般涉及數據分析,更具體的說,涉及用于可處理DOM模型和腳本的Web爬蟲來從聯網系統提取數據的方法和系統。
本發(fā)明所述其特征在于,包括兩大部件,其中第一部件,用于向第二部件提供數據提取任務,并接收第二部件的數據提取任務的執(zhí)行結果;第二部件,用于與網頁服務器通信,獲取網頁數據,并通過操作DOM模型提取數據,并對提取到的數據項進行描述,將所屬的提取到的數據與對其的描述發(fā)送給第一部件。
本發(fā)明中的第二部件包括用于解析網頁文件的解析器101、用于構造網頁DOM(文檔對象模型)的構造器102、用于執(zhí)行網頁中包含腳本的執(zhí)行裝置103、用于執(zhí)行數據提取代碼的執(zhí)行裝置104,以及用于存儲提取出的數據的裝置105;本發(fā)明中的第二部件可以是瀏覽器。
本發(fā)明所述的數據提取方法還包括通過特定的URL(統一資源地址,下同)發(fā)現前述URL適用的數據提取代碼。在本發(fā)明的一個實施例中,前述的數據提取代碼在網頁源文件中指明;在本發(fā)明的另一個實施例中,前述數據提取代碼通過公開其適用于何種類型的URL的正則表達式,通過前述的正則表達式的匹配結果確定前述URL適用的數據提取代碼。
本發(fā)明所述的Web爬蟲系統包括爬行任務控制裝置201、數據存儲裝置202、URL處理裝置203、采用本發(fā)明所述方法的網頁數據提取裝置204,以及為前述提取裝置204與爬行任務控制裝置201之間提供數據交換服務的其他裝置205;
在本發(fā)明的一個實施例中,爬行任務控制裝置201向網頁數據提取裝置204發(fā)送爬行任務,爬行任務中,一般包括任務的目標URL 251、相對目標URL的引用URL(ReferURL)202,訪問目標URL需要用到的Post數據203,數據存儲裝置中已知的已被提取過的網頁數據的Hash值204、數據存儲裝置中已知的已被提取過的網頁數據的獲取時間205。其中,屬性203、204、205,可以為空,即不包括在爬行任務中。
網頁數據提取裝置收到爬行任務后,通過任務指明的參數,獲取對應網頁的HTML代碼,并用本發(fā)明所述的數據提取方法提取數據;當提取到的數據與爬行任務中聲明的數據存儲裝置中儲的數據不符時,將新的數據反饋給爬行任務控制裝置201進行后續(xù)處理。前述的數據包括普通文本數據和通過本發(fā)明所述的數據提取方法發(fā)現的新的網絡URL地址。
本發(fā)明的有益效果在于,通過應用本發(fā)明所描述的方法和系統,可以有效地解決Web爬蟲系統無法提取腳本動態(tài)生成的網頁數據的問題;可以為垂直搜索引擎提供通用的數據標引框架,有效的降低垂直搜索引擎開發(fā)定向爬蟲的研發(fā)成本。
為了實現前述目標和有關的目標,這里連同下文和附圖來描述本發(fā)明的某些說明性的方面。但是,這些方面只表現出可以使用本發(fā)明的原理的各種方法的一些方法,并且,本發(fā)明意在包括所有這類方面及其相等物。
圖1A為根據本發(fā)明的某個方面的Web爬蟲系統的一個實施例圖1B為根據本發(fā)明的某個方面的應用了消息中間件的Web爬蟲系統的一個實施例圖2A為根據本發(fā)明的某個方面的數據分析系統的客戶機的模塊原理2B為根據本發(fā)明的某個方面的數據分析系統的基于瀏覽器的客戶機一個實施例圖2C為根據本發(fā)明的某個方面的數據分析系統的一個實施例圖2D為根據本發(fā)明的某個方面的數據分析系統的提供了腳本同步功能的一個實施例圖2E為適用于本發(fā)明所述方法的一種網頁的代碼示例圖3A為根據本發(fā)明的某個方面在客戶端提取網頁數據的一種基于XPATH的流程的說明圖3B為根據本發(fā)明的某個方面在客戶端提取網頁數據的一種流程的說明圖4A是根據本發(fā)明的某個方面實現的一種Web爬蟲系統的處理流程的說明圖4B是根據本發(fā)明的某個方面實現的一種Web爬蟲系統的含有子任務的處理流程的說明具體實施方式
下面根據附圖和實施例來描述本發(fā)明。在下文中,處于解釋的目的陳述了眾多特殊的細節(jié),以提供對本發(fā)明的徹底的理解。但是,本發(fā)明可以在沒有這些特殊細節(jié)的條件下加以實踐。在其他實施例中,用框圖形式表現了公知的結構和設備以促進對本發(fā)明的理解。
在本申請中,術語“部件”意在指計算機相關的實體一硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,部件包括但不限于在處理器上運行的進程、處理器、對象、可執(zhí)行項、執(zhí)行線程、程序和/或計算機。例如,在服務器上運行的程序和該服務器都可以是計算機部件。一個或多個部件可能駐留在執(zhí)行進程和/或線程內,并且,部件可能定位在一臺計算機上并/或分布在兩臺或更多臺計算機之間。
本發(fā)明提供了從網頁中提取數據的方法以及相應的使用本方法的Web爬蟲系統,本發(fā)明所述的方法和系統在相關專業(yè)技術領域,往往也被稱作“數據標引”。傳統的Web爬蟲所具有的某些缺點通過本發(fā)明得到了緩和。
在圖1A中,展示了根據本發(fā)明的某個方面的Web爬蟲系統100的實施例。在本發(fā)明的這個實施例中,數據分析系統100由編號從1到N的客戶機102-105(其中,N表示1到無窮大的任何數字)通訊系統108,爬蟲控制服務器110、搜索服務器111和網頁服務器112組成??蛻魴C102-105為供爬蟲控制服務器調度的一組“分布式資源”。它們一般用于執(zhí)行爬蟲控制服務器派發(fā)的任務,發(fā)現新的URL、報告網頁的更改、以及根據任務提取出的網頁數據或其他類似數據,并將所述的數據通過通信系統108提供給爬蟲控制服務器110。通信系統108可以是互聯網或局域網(內部網絡)或其他類似物構成,它提供了一種訪問方法。它也允許客戶機102-105與爬蟲控制服務器110,和/或客戶機102-105之間通信,用于搜集提取網頁信息。本質上,Web爬蟲的功能被分布在爬蟲控制服務器110以及客戶機102-105之中。爬蟲控制服務器110利用客戶機來從網頁服務器112那里獲得信息,客戶機102根據從爬蟲控制服務器獲取到的任務對網頁進行加工處理,比將處理后的結果反饋給爬蟲控制器110,以便于將獲得到的信息提供給搜索服務器111進行進一步處理。本發(fā)明提供了搜索引擎可以從中利用數據的更富有語義信息的數據集。
在圖1B中,展示了根據本發(fā)明的某個方面的Web爬蟲系統100的實施例的某種改進形態(tài)。在本發(fā)明的這個實施例中,通信系統108由消息中間件服務器120以及互聯網或局域網(內部網絡)或其他類似物構成??蛻魴C102-105之間以及客戶機102-105與爬蟲控制服務器110之間,通過消息中間件服務器120通信。在更進一步的具體實施例中,消息中間件服務器為支持XMPP(Extensible Messaging and Presence Protocol)協議的即時通信服務器;在本領域有經驗的工程師應該很容易想到用采取其他協議的服務器替換XMPP消息中間件服務器,如采用JMS(Java Message Service)規(guī)范的服務器,騰訊公司提供的QQ服務器,微軟公司提供的MSN服務器等。
在本發(fā)明的一個實施例中,客戶機102-105與爬蟲控制器110之間采用urlencode過的JSON(JavaScript Object Notation)字符串作為消息正文,通過XMPP協議傳遞。包括爬行任務、爬行任務的反饋、數據提取腳本的同步等。
在圖2A中,展示了根據本發(fā)明的某個方面的數據分析系統200的實施例。在本發(fā)明的這個實施例中,數據分析系統200由爬蟲控制服務器210、客戶機202、網頁服務器220構成。其中,客戶機202代表一臺或多臺執(zhí)行相似任務的計算機或計算機部件,客戶機202由網絡訪問部件202.0、HTML分析部件202.1、DOM(文檔對象模型,簡稱DOM,下同)構造部件202.2、腳本執(zhí)行部件202.3和任務執(zhí)行部件202.4構成,其中,從網頁服務器220獲取的網頁腳本可以通過腳本執(zhí)行部件202.3執(zhí)行,訪問并/或修改由DOM構造部件202.2構造的DOM。在進一步的實施例中,客戶機202還包括頁面布局引擎202.5、顯示渲染引擎202.6,在圖2B所示的實施例中,有此種實施例的進一步說明??蛻魴C202獲得數據提取任務后,啟動數據提取流程??蛻魴C202獲得數據提取任務的方式有多種,其中包括客戶機202主動向爬蟲控制器210查詢、申請新任務,爬蟲控制器210主動向客戶機202派發(fā)任務,根據某種規(guī)則自動在客戶機202上生成新任務。其中所述的根據某種規(guī)則自動在客戶機202生成新的任務多用于一個邏輯的數據項(數據單元)其數據分布在多個網頁,在圖2C所示的實施例中有此種情況的進一步說明??蛻魴C202獲得數據提取任務后,向所屬任務中指明的網頁服務器220發(fā)出請求所屬任務中指明網頁資源的HTTP請求,收到所屬的網頁服務器220返回的數據后,進入數據提取部分??蛻魴C202通過網絡訪問部件202.0收到網頁服務器220返回的數據后,通過HTML分析部件202.1將數據中的HTML標記識別出來,并通過與DOM構造部件202.2互動,構造與服務器220返回數據向對應的DOM模型(在開源瀏覽器Firefox中,有htmlparser與dom構造器如何互動產生DOM模型的源碼,在此不做贅述),并通過腳本執(zhí)行部件202.3執(zhí)行服務器220返回數據中嵌入和/或引用的腳本,用以獲得被腳本修改過的DOM模型,根據任務信息確定并獲取相應的數據提取代碼并通過任務執(zhí)行部件202.4執(zhí)行,已完成數據提取。
前述的數據提取任務一般包括以下內容要訪問的目標URL、該目標URL的引用URL(ReferURL,定義在HTTP規(guī)范中),更進一步的還可以包括要提交到目標URL的Post數據、訪問目標URL的HTTP方法(主要有GET、POST等)、訪問目標URL需要提供的Cookie(一種用于標示用戶身份的標示,一般為純文本,定義在HTTP規(guī)范中)和/或該任務相應的數據提取代碼或能夠唯一標識對應代碼的數據(如代碼的MD5值等)在一個具體實施例中,任務執(zhí)行部件202.4與腳本執(zhí)行部件202.3為同一部件,客戶機202通過稱之為“腳本注入”的技術將任務相應的數據提取代碼(一般為JavaScript)交由腳本執(zhí)行部件202.3執(zhí)行。在公開技術Firefox插件GreaseMonkey中,對此項技術進行了實現,在此不做贅述。
在一個具體實施例中,前述的任務代碼執(zhí)行部件202.4與腳本執(zhí)行部件202.3不是同一計算機組件,執(zhí)行部件202.4為可以訪問文檔對象模型(DOM)的不同于網頁腳本執(zhí)行引擎的其他組件,例如Python等。
在一個具體實施例中,任務執(zhí)行部件還包括用于存儲提取出的網頁數據的存儲部件202.4.1和/或用于向爬蟲控制器210反饋數據的部件202.4.2。數據提取腳本在執(zhí)行過程中,將抽取到的數據存儲到數據存儲部件202.4.1中,并通過反饋數據部件202.4.2向爬蟲控制器反饋任務執(zhí)行結果。在進一步的實施例中,反饋數據部件202.4.2通過消息中間件服務器的客戶端反饋數據,并通過數據提取腳本激發(fā);在進一步的實施例中,反饋數據部件202.4.2當數據提取腳本執(zhí)行完畢后,將數據存儲部件202.4.1中存儲的數據和/或數據提取腳本執(zhí)行的結果反饋給派發(fā)任務的爬蟲控制器。
在一個具體實施例中,客戶202獲得的數據提取任務中包含當前服務器前次記錄的任務中指明的URL上包含的數據的記錄時間,根據HTTP協議的規(guī)范,客戶機可以構造出特殊的HTTP請求,以減小網絡開銷。當對方服務器反饋數據未更新的HTTP響應時,向發(fā)送前述數據提取任務爬蟲控制器210報告數據未更新,否則,則將從網頁中提取到的數據(包括新發(fā)現的URL/爬行任務)反饋給爬蟲控制器210;在進一步的實施例中,客戶機202獲得的數據提取任務中當前服務器前次記錄的任務中指明的URL上包含的數據的某種唯一標識(如MD5等),客戶機202將其從網頁中提取的數據進行計算,比較與服務器端的數據是否相同,如相同,則反饋給爬蟲控制器210數據未更新;如不同,則將從網頁中提取到的數據(包括新發(fā)現的URL/爬行任務)反饋給爬蟲控制器210。
在一個具體實施例中,爬蟲控制器收到了客戶機202反饋的數據,將其中從網頁中提取的文本或圖像數據存儲在存儲部件上(一般為計算機外存,如硬盤),以供搜索引擎構建索引,將其中的URL信息放入待抓取URL列表中。當URL信息不在待抓取列表中時,則將其加入;當URL信息以存在與待抓取列表中時,則提升其評分等級,以使得其被爬蟲控制器更頻繁的派發(fā)以獲取更新。此處提供該實施例,僅僅描述了一種可行的如何處理新發(fā)現的URL的方法,任何公知的基于URL的網頁數據獲取調度方法都被應用于本發(fā)明。
在圖2B中,展示了根據本發(fā)明的某個方面的數據分析系統200的實施例的某種改進形態(tài)。在本發(fā)明的這個實施例中,客戶機202由網絡訪問部件202.0、HTML分析部件202.1、DOM(文檔對象模型,簡稱DOM,下同)構造部件202.2、腳本執(zhí)行部件202.3、任務執(zhí)行部件202.4、頁面布局引擎202.5和顯示渲染引擎202.6構成,其中,從網頁服務器220獲取的網頁腳本可以通過腳本執(zhí)行部件202.3執(zhí)行,訪問并/或修改由DOM構造部件202.2構造的DOM。在技術實現上,頁面布局引擎202.5于顯示渲染引擎202.6可以是同一部件,本技術領域中有經驗的工程師很容易想到通過移除顯示渲染引擎或更進一步的移除或簡化頁面布局部件202.5以達到加快頁面分析速度的目的。在本發(fā)明的一個實施例中,顯示渲染引擎為空服務組件,即雖然提供了相應的顯示渲染接口,但并不實際在客戶機的顯示設備(如果存在)上繪制圖像。
相關領域的專業(yè)技術人員將包括網絡訪問部件202.0、HTML分析部件202.1、DOM構造部件202.2、腳本執(zhí)行部件202.3、頁面布局引擎202.5和顯示渲染引擎202.6的復合裝置稱為“瀏覽器渲染引擎”,例如Mozilla.org的Gecko引擎、微軟公司的MSHTML引擎、蘋果公司的WebKit引擎等。顯而易見的,本發(fā)明的某個具體實施例可以是任務執(zhí)行部件202.4與“瀏覽器渲染引擎”或“瀏覽器”復合(下文中,為便于說明,如不做特別說明使用術語“瀏覽器”用于不做區(qū)別的代表“瀏覽器渲染引擎”或“瀏覽器”。本發(fā)明的具體實施例中,采用日常人們?yōu)g覽網頁的“瀏覽器”與僅采用“瀏覽器渲染引擎”,對實施本發(fā)明所示出的方法與系統沒有能夠產生新穎性和創(chuàng)造性的區(qū)別),以完成數據抽取工作并與爬蟲控制器210等其他部件配合構成Web爬蟲系統。
在圖2C中,展示了根據本發(fā)明的某個方面的數據分析系統200的實施例的某種改進形態(tài)。在本發(fā)明的這個實施例中,任務執(zhí)行部件202.4提供接口,執(zhí)行任務指明的數據提取代碼,數據提取代碼將執(zhí)行過程中需要進一步爬行的網頁URL連同要訪問前述URL所必須的其他附屬數據存儲在數據存儲部件202.4.1,任務執(zhí)行部件發(fā)現前述數據提取代碼產生了新的存儲在數據存儲部件202.4.1的新任務,則按照某種順序執(zhí)行新產生的子任務,在執(zhí)行子任務產生的數據與執(zhí)行前述數據提取代碼產生的數據混合,共同發(fā)送到爬蟲控制服務器210。
在本發(fā)明的一個具體實施例中,數據存儲部件202.4.1通過鍵、值對存儲數據,其中,值一般用于記錄從網頁中提取的數據;鍵一般是用于描述值特性的文本值。
在圖2D中,展示了根據本發(fā)明的某個方面的數據分析系統200的實施例的某種改進形態(tài)。在本發(fā)明的這個實施例中,客戶機202還包括腳本存儲部件202.7,該部件中存儲了爬蟲控制器提供的全部或部分適用的數據提取腳本,客戶機202與爬蟲控制器210或其他存儲了數據提取腳本的計算機部件同步數據提取腳本。任務執(zhí)行部件202.4通過客戶端202獲取到任務的目標URL,確定目標URL適用于何種數據提取腳本。腳本確定后,送入任務執(zhí)行部件202.4執(zhí)行,后續(xù)處理過程不再贅述。
在圖2E中,展示了根據本發(fā)明的某個方面的數據分析系統的實施例。在本發(fā)明的這個實施例中,在需要進行數據提取處理的網頁中,含有如何獲取數據提取代碼的指示,在這個實施例中,使用頭元素節(jié)中Meta子元素用于描述如何獲取數據提取代碼,在本實施例中是通過給出數據提取代碼的URL實現的。
在圖3A中,展示了根據本發(fā)明的某個方面的數據分析系統的實施例。在本發(fā)明的這個實施例中,在前述實施例中描述DOM構造部件202.2構造的DOM模型支持XPATH(XML Path Language)規(guī)范的情況下,采用XPATH作為從網頁DOM上提取數據的工具。當待提取數據的網頁的DOM模型構造好后,使用XPATH定位網頁上的元素,提取出相應的文本信息或進行其他處理。以圖3A為例,XPATH表達式//h1[@id=″idx_news″]/a/font,代表在id為idx_news的h1元素下的a元素下的font元素,可以通過訪問前述font元素的innerText、contentTex t或其他DOM屬性、子元素取得其內部的文本,在本例中為“測試新聞標題”。XPATH為W3C定義的操作DOM元素的基本方法之一,在此不做贅述。
在本發(fā)明的一個具體實施例中,通過將生成特定網頁元素及其子元素的HTML頁面源碼提取數據??梢酝ㄟ^前述的XPATH方法或通過DOM規(guī)范中規(guī)定的方法獲得要生成HTML頁面源碼的網頁元素,通過對其DOM子元素及其屬性的遍歷,生成與前述元素等價的HTML代碼,即瀏覽器可以通過所述的代碼重新生成屬性、子元素一樣的DOM元素。將網頁元素轉換為HTML的方法在開源的Firefox插件view_source_chart中有具體實現,在此不再贅述??梢酝ㄟ^對生成的HTML代碼進行字符串匹配提取文本信息。在一個實施例中,字符串匹配的方法是順序或倒序查找;在一個實施例中,字符串匹配的方法是正則表達式。顯然的,當前述用于生成HTML頁面源碼的網頁元素為網頁根元素時,本實施例所述的數據提取方法將退化為直接匹配網頁源碼。
在圖3B中,展示了根據本發(fā)明的某個方面的數據分析系統的實施例。在本發(fā)明的這個實施例中,先通過前述由實施例中示出的方法將網頁元素A轉化為相應的源碼,通過在源碼中進行字符串匹配,得到網頁元素B對應的源碼,通過網頁元素B,獲得確定網頁元素C,訪問網頁元素C的DOM屬性,完成數據提取。本實施例一般用于自根元素的XPATH表達式經常變化,無法準確獲取相應的頁面元素。
鑒于以上所示和所描述的這些示范系統,將參考圖4A-4B中的流程圖來更好的理解可以根據本發(fā)明來加以實施的方法。處于簡單解釋的目的,這些方法被表現和描述為一系列方框,但需要注意,本發(fā)明并沒有受到這些方框順序的限制,因為根據本發(fā)明,一些方框可能按與這里所示和所描述的順序不同的順序發(fā)生并/或與其他方框并發(fā)的發(fā)生。而且,可能并不是要求所有被展示的方框根據本發(fā)明來實施這些方法。
參考圖4A,展示了根據本發(fā)明的某個方面的數據處理分析系統的方法400的流程圖。401客戶端從爬蟲控制器獲得任務,任務中一般包括目標URL、目標URL的引用URL、Post數據等,客戶端根據任務的描述的目標URL,402向網頁服務器發(fā)送HTTP請求,所述的請求中可以包含If-Not-Modified信息,用于指明服務器端已有的數據時間。網頁服務器將前述請求的Web頁面返回給客戶端,或返回HTTP協議中定義的其他狀態(tài)??蛻舳丝赡軣o法與網頁服務器建立連接,在此種情況下,應向爬蟲控制器報告錯誤,目標服務器器不可達。
當403網頁服務器返回網頁數據給客戶端,客戶端根據任務信息,確定要執(zhí)行的腳本,在一個實施例中,通過匹配腳本附帶的URL模式信息與目前URL進行正則式匹配確定該URL應適用的腳本。通過前述的“腳本注入”技術,404將數據提取腳本注入網頁,405執(zhí)行數據提取腳本進行數據提取。提取的數據包括附加了額外描述性屬性的文本信息和前述網頁中引用的URL。前述的任務中可能包含服務器端已知的數據信息或數據信息的特征值(如MD5),客戶端將新提取的數據與服務器端已知的數據信息或數據信息的特征值進行比對406。當數據或特征值不一致時,407將新提取的數據反饋回服務器端;當數據或特征值一致時,通知服務器端數據無變化。
參考圖4B,展示了根據本發(fā)明的某個方面的數據處理分析系統的方法450的流程圖。451客戶端從爬蟲控制器獲得任務,任務中一般包括目標URL、目標URL的引用URL、Post數據等,客戶端根據任務的描述的目標URL,452向網頁服務器發(fā)送HTTP請求,所述的請求中可以包含If-Not-Modified信息,用于指明服務器端已有的數據時間。453網頁服務器將前述請求的Web頁面返回給客戶端,或返回HTTP協議中定義的其他狀態(tài)??蛻舳丝赡軣o法與網頁服務器建立連接,在此種情況下,應向爬蟲控制器報告錯誤,目標服務器器不可達。
當網頁服務器返回網頁數據給客戶端,客戶端根據任務信息,確定要執(zhí)行的腳本,在一個實施例中,通過匹配腳本附帶的URL模式信息與目前URL進行正則式匹配確定該URL應適用的腳本。通過前述的“腳本注入”技術,454將數據提取腳本注入網頁,455執(zhí)行數據提取腳本進行數據提取。提取的數據包括附加了額外描述性屬性的文本信息和前述網頁中引用的URL。執(zhí)行數據提取腳本后,459檢查數據提取腳本是否產生了新的數據提取任務,如果有,則458執(zhí)行子任務進行數據提取。前述的任務中可能包含服務器端已知的數據信息或數據信息的特征值(如MD5),客戶端將新提取的數據與服務器端已知的數據信息或數據信息的特征值進行比對456。當數據或特征值不一致時,457將新提取的數據反饋回服務器端;當數據或特征值一致時,通知服務器端數據無變化。
在本發(fā)明的一個實施例中,在爬蟲控制器中,存儲一些種子URL,客戶端通過提取前述種子URL頁面上引用的新的URL,并將新發(fā)現的URL提交回爬蟲控制器。服務器端識別客戶端上報的URL,將新發(fā)現的URL放入待爬行的URL列表中。在一個實施例中,客戶端主動向爬蟲控制器發(fā)送請求,由爬蟲控制器從待爬行URL列表中取出URL構成爬行任務反饋給客戶端。
在本發(fā)明的一個具體實施例中,爬蟲控制器可以通過將同一URL的數據采集工作復制為多個任務,交由多個數據提取客戶端進行,通過比對數據提取客戶端返回的數據,從而避免惡意的客戶端提供虛假數據。
在本發(fā)明的一個具體實施例中,客戶端還包括用于輔助編寫數據提取腳本的開發(fā)環(huán)境。通過前述的“腳本注入”的方法,檢測在網頁上的鼠標動作,當發(fā)生單擊事件后,取得點擊事件所在的網頁元素,并根據前述的元素,生成能夠獲取到前述元素的XPATH表達式。開發(fā)者可以通過某種交換部件修改XPATH表達式,新的表達式的選取效果將實時的反應的網頁上。前述的開發(fā)環(huán)境還提供通過XPATH和該表達式能夠選取的元素類型自動生成數據提取代碼。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出對于本發(fā)明技術領域的普通技術人員來說,在不脫離本發(fā)明原來的前提下,可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
權利要求
1.一種網頁數據的提取方法,其特征在于第一部件,用于向第二部件提供數據提取任務,并接收第二部件的數據提取任務的執(zhí)行結果;第二部件,用于與網頁服務器通信,獲取網頁數據,并通過操作DOM模型提取數據,并對提取到的數據項進行描述,將所屬的提取到的數據與對其的描述發(fā)送給第一部件。
2.根據權利要求1所述的網頁數據的提取方法,其特征在于第二部件中,包括用于解析網頁的解析器、用于構造DOM模型的DOM構造器、用于執(zhí)行網頁中嵌入或引用腳本的腳本解釋器以及用于從DOM模型提取數據的數據提取裝置,其中通過腳本解釋器解釋的網頁腳本可以訪問并修改由DOM構造器構造的網頁DOM模型。
3.根據權利要求2所述的網頁數據的提取方法,其特征在于第二部件中,包括用于計算網頁各元素大小、位置的網頁布局部件。
4.根據權利要求2所述的網頁數據的提取方法,其特征在于第二部件中,所述的從DOM模型提取數據的數據提取裝置,將用于提取數據的網頁腳本交由所述的腳本解釋器執(zhí)行。
5.根據權利要求4所述的網頁數據的提取方法,其特征在于用于進行數據提取的網頁腳本通過所述的進行數據提取網頁指定。
6.根據權利要求4所述的網頁數據的提取方法,其特征在于存在通過網頁URL確定數據提取腳本的部件或服務,用于進行數據提取的網頁腳本是通過將所述的進行數據提取網頁的URL傳遞給所述的用于確定數據提取腳本部件或服務確定的。
7.根據權利要求4所述的網頁數據的提取方法,其特征在于所述的用于數據提取的網頁腳本通過XPATH定位網頁元素,通過訪問所述的網頁元素的屬性或子元素節(jié)點獲取網頁數據。
8.根據權利要求4所述的網頁數據的提取方法,其特征在于所述的用于數據提取的網頁腳本已經取得的網頁元素,生成相對應的網頁代碼,通過正則表達式確定特定字符串的位置,并根據前述特定字符串的位置定位網頁元素。
9.根據權利要求4所述的網頁數據的提取方法,其特征在于所述的用于數據提取的網頁腳本使用權利要求7與權利要求8描述的數據提取方法組合使用確定待提取數據的網頁元素。
10.根據權利要求2所述的網頁數據的提取方法,其特征在于第二部件中,包括用于存儲從網頁中提取到的數據的數據存儲部件,所述的數據存儲部件中存儲的從網頁中提取的數據可以增加一個或多個用于標明其內容類型的文本;數據提取過程結束后,第二部件將提取到的數據進行處理,返回第一部件。
11.一種Web爬蟲系統,其特征在于由向爬蟲派發(fā)Web爬行任務的爬蟲控制器,以及對Web進行數據提取的Web爬蟲構成;所述的Web爬蟲由HTML解析器、DOM模型構造器、腳本解釋器以及數據提取裝置組成;所述的爬蟲完成由爬蟲控制器提供的數據提取任務后,將任務執(zhí)行的結果返回爬蟲控制器或其他由爬蟲控制器指定的通信對方;所述的爬蟲控制器與爬蟲之間通過網絡進行數據的交換。
12.根據權利要求11所述的WEB爬蟲系統,其特征在于所述的爬蟲與爬蟲控制器采用消息中間件,通過網絡交換數據。
全文摘要
本發(fā)明涉及一種利用Web爬蟲(Crawler)從網頁中提取數據的方法與系統,更進一步的,本發(fā)明示出了一種利用瀏覽器頁面布局引擎從網頁中提取數據并被搜索引擎使用的方法與系統,包括第一部件和第二部件;第一部件,用于向第二部件提供數據提取任務,并接收第二部件的數據提取任務的執(zhí)行結果;第二部件,用于與網頁服務器通信,獲取網頁數據,并通過操作DOM模型提取數據,并對提取到的數據項進行描述,將所屬的提取到的數據與對其的描述發(fā)送給第一部件。通過應用本發(fā)明所描述的方法和系統,可以有效地解決Web爬蟲系統無法提取腳本動態(tài)生成的網頁數據的問題;可以為垂直搜索引擎提供通用的數據標引框架,有效的降低垂直搜索引擎開發(fā)定向爬蟲的研發(fā)成本。
文檔編號G06F17/30GK101089856SQ20071011932
公開日2007年12月19日 申請日期2007年7月20日 優(yōu)先權日2007年7月20日
發(fā)明者李沫南 申請人:李沫南