一種基于過濾表達式和渲染引擎的自動監(jiān)視動態(tài)網(wǎng)頁更新的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機領(lǐng)域,特別涉及一種自動監(jiān)視動態(tài)網(wǎng)頁更新的方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)已經(jīng)逐漸取代傳統(tǒng)媒體,成為人們獲取信息的主要 渠道。然而,由于大多數(shù)網(wǎng)頁不提供信息更新時的主動通知功能,人們從網(wǎng)頁上獲取信息的 效率并不高。為了關(guān)注多個網(wǎng)頁,人們只能手動打開各個需要關(guān)注的網(wǎng)頁,人工篩選新的信 息。而且對于某些更新頻率較低的網(wǎng)站,人們一次次地打開發(fā)現(xiàn)沒有更新,浪費了大量的時 間。人們獲取網(wǎng)頁信息的過程存在著靈活性差、及時性差等不足。
[0003] 為了提高獲取信息的效率,RSS/Atom等Web信息同步技術(shù)被提出并作為W3C標(biāo)準(zhǔn)。 利用這類技術(shù),由網(wǎng)站提供RSS訂閱源,其中包含網(wǎng)站的最新內(nèi)容,用戶在RSS客戶端訂閱 RSS源即可獲取到網(wǎng)站的最新內(nèi)容并當(dāng)RSS源更新時得到通知。然而,經(jīng)過十幾年的發(fā)展, 大部分網(wǎng)站仍然不支持RSS訂閱,用戶無法利用RSS功能獲取這些網(wǎng)站的更新。此外,RSS 訂閱源完全由網(wǎng)站提供,可能存在大量用戶不關(guān)心的內(nèi)容,缺之定制性。
[0004] 隨著網(wǎng)頁技術(shù)的發(fā)展,AJAX、JSONP等技術(shù)的應(yīng)用越來越普及,越來越多的Web數(shù) 據(jù)由前端頁面從服務(wù)器端動態(tài)獲取。傳統(tǒng)的網(wǎng)頁下載方式因為無法解析JavaScript代碼, 所以無法獲取到完整的動態(tài)網(wǎng)頁內(nèi)容,也就無法在服務(wù)器端監(jiān)視動態(tài)網(wǎng)頁內(nèi)容的更新。
【發(fā)明內(nèi)容】
[0005] 為了克服上述現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種基于過濾表達式和渲染引 擎的自動監(jiān)視動態(tài)網(wǎng)頁更新的方法,以解決傳統(tǒng)信息訂閱模式缺乏定制性的問題,同時解 決傳統(tǒng)網(wǎng)頁抓取不能解析動態(tài)網(wǎng)頁的缺陷。本發(fā)明能夠自動幫助用戶監(jiān)視目標(biāo)網(wǎng)站及網(wǎng)站 中感興趣內(nèi)容的更新,大幅提高人們獲取網(wǎng)頁更新的效率。
[0006] 為實現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
[0007] -種基于過濾表達式和渲染引擎的自動監(jiān)視動態(tài)網(wǎng)頁更新的方法,包括以下步 驟:
[0008] S10、客戶端獲取用戶關(guān)注點對應(yīng)的過濾表達式:用戶通過可視化界面指定網(wǎng)頁中 感興趣的部分作為關(guān)注點,由應(yīng)用或客戶端自動生成或者由用戶自己提供該關(guān)注點對應(yīng)的 過濾表達式;
[0009] S20、服務(wù)器端利用渲染引擎檢查過濾表達式對應(yīng)的內(nèi)容更新:服務(wù)器端利用渲染 引擎渲染動態(tài)網(wǎng)頁,以獲取與用戶所見相同的頁面,并提取出用戶的關(guān)注點;
[0010] S30、當(dāng)用戶的關(guān)注點更新時,服務(wù)器端及時將更新內(nèi)容推送給用戶,大幅提高用 戶獲取網(wǎng)頁更新的效率。
[0011] 進一步的,所述步驟SlO包括:
[0012] S11、用戶在應(yīng)用或客戶端內(nèi)輸入需要關(guān)注的網(wǎng)址;
[0013] S12、應(yīng)用將用戶關(guān)注的網(wǎng)址渲染并顯示出來;
[0014] S13、用戶通過鼠標(biāo)選中或點擊指定關(guān)注點,由應(yīng)用自動生成過濾表達式或者由用 戶自行編輯過濾表達式;
[0015] S14、應(yīng)用將過濾表達式及相應(yīng)的網(wǎng)址、用戶信息上傳到服務(wù)器。
[0016] 進一步的,所述步驟S13的具體方法為:當(dāng)用戶通過鼠標(biāo)選中或者點擊頁面中的 元素時,應(yīng)用能夠獲取用戶所選或所點位置對應(yīng)的過濾表達式;在此基礎(chǔ)上,用戶可以對此 過濾表達式進行修改或者加入其它過濾表達式。
[0017] 進一步的,所述步驟SlO中,過濾表達式是XPath,Regular Expression或者是兩 者的組合形式。過濾表達式可以由應(yīng)用或客戶端自動生成,用戶可以在自動生成的表達式 上做修改;過濾表達式也可以完全由用戶自己提供。過濾表達式的獲取方式具有很高的靈 活性。
[0018] 進一步的,所述步驟S20包括:
[0019] S21、將用戶的過濾表達式保存到數(shù)據(jù)庫;
[0020] S22、周期性取出用戶的過濾表達式;
[0021] S23、下載該過濾表達式對應(yīng)的網(wǎng)頁并用渲染引擎對網(wǎng)頁進行渲染;
[0022] S24、利用過濾表達式從渲染后的頁面中提取出用戶的關(guān)注點;
[0023] S25、與上一次保存的用戶關(guān)注點進行對比,如果不同則將更新的內(nèi)容推送給用 戶。
[0024] 進一步的,所述步驟S20中,判斷網(wǎng)頁是否更新的依據(jù)是用戶的關(guān)注點是否更新, 即首先使用過濾表達式對網(wǎng)頁內(nèi)容進行提取,再判斷用戶感興趣的內(nèi)容是否發(fā)生變化;只 有當(dāng)用戶感興趣的內(nèi)容發(fā)生變化時,才會通知用戶。
[0025] 進一步的,所述植染引擎使用WebKit,Gecko或Trident瀏覽器引擎,當(dāng)某植染引 擎渲染失敗時使用另一種渲染引擎重試。具體選擇哪個引擎可以視用戶端情況而定。
[0026] 進一步的,渲染服務(wù)由一個分布式集群提供,該集群中節(jié)點的數(shù)量能夠自動根據(jù) 負(fù)載情況動態(tài)變化。以盡可能提高系統(tǒng)的負(fù)載能力,同時也可以降低渲染的時延。
[0027] 進一步的,所述步驟S22中,服務(wù)器端設(shè)置一個缺省的周期或者在客戶端上傳過 濾表達式時由用戶指定周期。
[0028] 本發(fā)明的有益效果是:
[0029] (1)本發(fā)明提出在服務(wù)器端使用渲染引擎對動態(tài)網(wǎng)頁進行渲染,實現(xiàn)了對動態(tài)網(wǎng) 頁的監(jiān)視,大幅提高了人們獲取網(wǎng)頁更新的效率。
[0030] (2)本發(fā)明提出使用過濾表達式精確表達用戶在網(wǎng)頁中的關(guān)注點,該過濾表達式 可以是XPath或者Regular Expression或者是兩者的組合,這種表達方式可以靈活地表達 用戶需求。
[0031] (3)本發(fā)明提出使用分布式的渲染服務(wù)器集群提供渲染服務(wù),并當(dāng)集群負(fù)載發(fā)生 變化時自動增加或減少節(jié)點數(shù)量,能夠有效提高系統(tǒng)負(fù)載,并實現(xiàn)負(fù)載均衡。
【附圖說明】
[0032] 圖1為本發(fā)明提出的自動監(jiān)視動態(tài)網(wǎng)頁更新方法的流程圖;
[0033] 圖2為實施例中輔助用戶提取過濾表達式的流程;
[0034]圖3為實施例分布式渲染服務(wù)器集群的系統(tǒng)架構(gòu)圖。
【具體實施方式】
[0035] 下面結(jié)合附圖對本發(fā)明技術(shù)方案進行詳細(xì)說明。
[0036] 如圖1所示,本發(fā)明的一種基于過濾表達式和渲染引擎的自動監(jiān)視動態(tài)網(wǎng)頁更新 的方法主要分為兩大部分。
[0037] 第一部分的任務(wù)是獲取用戶關(guān)注點對應(yīng)的過濾表達式,主要包括以下幾個步驟:
[0038] (1)用戶在應(yīng)用或者客戶端內(nèi)輸入需要關(guān)注的網(wǎng)址;
[0039] 該網(wǎng)址即為待關(guān)注的目標(biāo)網(wǎng)址,之后所有的操作均針對該網(wǎng)址進行。
[0040] (2)應(yīng)用將用戶關(guān)注的網(wǎng)址渲染并顯示出來;
[0041] 此處存在多種實現(xiàn)方法:法一,該應(yīng)用以瀏覽器插件的形式存在,由瀏覽器插件操 作瀏覽器,直接利用用戶本地的瀏覽器打開目標(biāo)網(wǎng)址;法二,該應(yīng)用以客戶端形式存在,客 戶端中內(nèi)嵌一個渲染引擎,通過該渲染引擎對頁面進行渲染顯示;法三,該應(yīng)用以網(wǎng)頁形式 存在,目標(biāo)網(wǎng)頁以frame形式內(nèi)嵌到當(dāng)前網(wǎng)頁??紤]到跨域請求的相關(guān)問題,目標(biāo)網(wǎng)頁需要 利用服務(wù)器端的渲染引擎進行渲染。
[0042] (3)用戶通過鼠標(biāo)選中或點擊指定關(guān)注點,由應(yīng)用自動生成過濾表達式,用戶也可 以自行編輯過濾表達式;
[0043] 其中,過濾表達式可以使用XPath,Regular Expression或者是兩者的組合形式, 后續(xù)可以加入其它可能的過濾形式。
[0044] 具體方法為:當(dāng)用戶通過鼠標(biāo)選中或者點擊頁面中的元素時,應(yīng)用可以獲取用戶 所選或所點位置對應(yīng)的XPath表達式。在此基礎(chǔ)上,用戶可以