專利名稱:一種截取網(wǎng)頁(yè)內(nèi)容的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體地說涉及一種截取網(wǎng)頁(yè)內(nèi)容的方法。
背景技術(shù):
網(wǎng)絡(luò)上的資源非常豐富,當(dāng)用戶瀏覽網(wǎng)頁(yè)時(shí)經(jīng)常會(huì)遇到一些感興趣的內(nèi)容,如何將這些內(nèi)容有選擇性地保存下來,非常實(shí)用。現(xiàn)在一般的截取方式為包括使用屏幕打印鍵(print screen)進(jìn)行全屏拷貝;或者利用一些工具軟件比如即時(shí)聊天工具QQ,它帶有截取網(wǎng)頁(yè)內(nèi)容的工具,提供對(duì)當(dāng)前全屏區(qū)域內(nèi)的任意區(qū)域進(jìn)行選擇性的截取,但是它們都不能截取滾動(dòng)頁(yè)面中沒有顯示出來的內(nèi)容,即對(duì)于滾動(dòng)頁(yè)面中由于屏幕尺寸限制而暫時(shí)不可見的部分無(wú)法進(jìn)行截取。為了得到滾屏中的內(nèi)容,往往是采用多次截取,然后拼湊在一起的方法,這樣操作比較麻煩。
發(fā)明內(nèi)容
本發(fā)明就是為了克服以上的不足,提出了一種截取網(wǎng)頁(yè)內(nèi)容的方法,該方法可以根據(jù)用戶選擇而截取到屏幕中不可見部分的網(wǎng)頁(yè)內(nèi)容。
為實(shí)現(xiàn)上述目的,本發(fā)明的截取網(wǎng)頁(yè)內(nèi)容的方法包括如下步驟A、用戶選擇截取目標(biāo);B、根據(jù)截取目標(biāo)獲取網(wǎng)頁(yè)內(nèi)容;C、將獲取的網(wǎng)頁(yè)內(nèi)容保存到磁盤;所述步驟B包含如下過程B1、判斷步驟A中的所述截取目標(biāo)是否包含屏幕不可見部分,如不是則轉(zhuǎn)入步驟C,否則繼續(xù)下一步;B2、計(jì)算并獲取所述截取目標(biāo)所包含區(qū)域的網(wǎng)頁(yè)內(nèi)容后轉(zhuǎn)入步驟C。
其中,所述步驟B2包含如下過程B21、計(jì)算獲取截取目標(biāo)屏幕可見部分圖像并保存到內(nèi)存;B22、計(jì)算截取目標(biāo)可滾動(dòng)的下一步位置并將截取目標(biāo)進(jìn)行滾動(dòng)從而得到截取目標(biāo)的屏幕不可見部分;B23、判斷截取目標(biāo)是否可繼續(xù)滾動(dòng),如是則保存圖像到內(nèi)存后轉(zhuǎn)入B22,否則轉(zhuǎn)入步驟C。
所述步驟B21包含如下過程B211、獲取截取目標(biāo)的區(qū)域數(shù)據(jù);B212、定義一位置和大小與目標(biāo)區(qū)域相同的臨時(shí)區(qū)域;B213、將截取目標(biāo)的屏幕可見部分與臨時(shí)區(qū)域取交集并根據(jù)結(jié)果更新臨時(shí)區(qū)域;B214、獲取更新后的臨時(shí)區(qū)域相對(duì)于截取目標(biāo)區(qū)域的位置;B215、將更新后的臨時(shí)區(qū)域中對(duì)應(yīng)的圖像按上步得到的位置存入內(nèi)存。
當(dāng)所述步驟A為單元截圖方式時(shí),所述步驟B1還包含如下過程B11、保存截取目標(biāo)元素及其位置信息至一數(shù)組;B12、獲取截取目標(biāo)父元素及其位置信息并保存至所述數(shù)組;B13、將前述兩步保存的元素滾動(dòng)到正好可顯示截取目標(biāo)元素的位置。
所述步驟B213和B22是通過遍歷所述數(shù)組來實(shí)現(xiàn)的。
當(dāng)所述步驟A為滾動(dòng)窗口截圖方式時(shí),其包含如下過程A1、用戶選擇滾動(dòng)截圖方式;A2、向?qū)?yīng)頁(yè)面邊界方向自動(dòng)滾動(dòng)頁(yè)面;A3、確定截圖區(qū)域;A4、獲取當(dāng)前網(wǎng)頁(yè)的html或body。
當(dāng)所述步驟A為滾動(dòng)窗口截圖方式時(shí),所述步驟B1還包含如下過程首先保存截取目標(biāo)元素及其當(dāng)前滾動(dòng)位置信息;其次將目標(biāo)元素滾動(dòng)到正好可顯示目標(biāo)元素的位置。
本發(fā)明的截取網(wǎng)頁(yè)內(nèi)容的方法,可以根據(jù)用戶的選擇而截取到屏幕不可見部分的網(wǎng)頁(yè)內(nèi)容,從而避免了需要一屏一屏的截取網(wǎng)頁(yè)內(nèi)容,方便了用戶。
本發(fā)明的特征及優(yōu)點(diǎn)將通過實(shí)施例結(jié)合附圖進(jìn)行詳細(xì)說明。
圖1是本發(fā)明實(shí)施例一的單元截圖方式的流程圖;圖2是本發(fā)明實(shí)施例一流程中步驟S的流程圖;圖3是本發(fā)明實(shí)施例一中目標(biāo)元素與當(dāng)前元素區(qū)域關(guān)系示意圖;圖4是本發(fā)明實(shí)施例二的滾動(dòng)窗口截圖方式的流程圖。
具體實(shí)施例方式
本發(fā)明的截取網(wǎng)頁(yè)內(nèi)容的方法的實(shí)施例一如圖1所示,其為單元截圖方式。首先,用戶選擇進(jìn)入單元截圖狀態(tài),確定截圖單元目標(biāo)。這里的單元指的是網(wǎng)頁(yè)上的一塊特定區(qū)域,其大小并不限定。一般網(wǎng)頁(yè)都是由圖片和文字等多種元素綜合構(gòu)成,例如在網(wǎng)頁(yè)的某一區(qū)域?yàn)橐恍侣剻?,而在該新聞欄中又包含多條新聞標(biāo)題,當(dāng)我們選擇某一新聞標(biāo)題時(shí),該新聞標(biāo)題的區(qū)域稱為一個(gè)單元,而當(dāng)我們選定的為新聞欄時(shí),則該新聞欄的區(qū)域稱為一個(gè)單元。根據(jù)鼠標(biāo)所處的位置獲取相應(yīng)的網(wǎng)頁(yè)元素后判斷元素是否可滾動(dòng),也即判斷是否截取目標(biāo)包含不可見的區(qū)域,例如以上述新聞欄為例,用戶現(xiàn)時(shí)所處的網(wǎng)頁(yè)位置只包含該新聞欄的一部分,這時(shí)用戶選擇了該新聞欄作為截取目標(biāo),則首先保存該新聞欄的元素及其顯示部分相對(duì)于整個(gè)新聞欄的位置信息到數(shù)組A中,此時(shí)新聞欄被稱為目標(biāo)元素。之后獲取父元素,這是因?yàn)樵诰W(wǎng)頁(yè)編程中采用的是一種層次化的編程方式,可以這樣理解這種編程方式,例如上述新聞欄相對(duì)于下層的新聞條來說是新聞條的父元素,而整個(gè)網(wǎng)頁(yè)相對(duì)于新聞欄來說是新聞欄的父元素,當(dāng)然實(shí)際的網(wǎng)頁(yè)編程并非一定如此對(duì)應(yīng),可能某條新聞標(biāo)題的實(shí)際上層指向并非是上述的新聞欄,這里只是更清楚的說明父元素的含義是指選定的目標(biāo)元素在網(wǎng)頁(yè)編程源程序中的上層元素。同時(shí)實(shí)際上也并非只是上述這樣新聞標(biāo)題一新聞欄一網(wǎng)頁(yè)這樣的三層結(jié)構(gòu),因此需要循環(huán)判斷直到得到目標(biāo)元素的頂層元素。在循環(huán)中每次獲取的父元素同樣也要進(jìn)行判斷是否可滾動(dòng)并記錄其元素和滾動(dòng)位置的上述步驟。然后遍歷數(shù)組A,將其中的元素滾動(dòng)到初始位置,即正好可以顯示目標(biāo)元素的位置,其過程如圖2所示,通過計(jì)算顯示區(qū)域的位置與其初始位置的偏移量不斷滾動(dòng)元素直至元素滾動(dòng)到初始位置。此后開始計(jì)算截取區(qū)域并保存圖像到內(nèi)存,這其中包括如下過程首先獲取目標(biāo)元素的區(qū)域數(shù)據(jù),接著定義一個(gè)等于目標(biāo)區(qū)域的臨時(shí)區(qū)域B,它記錄了目標(biāo)元素區(qū)域的左上角坐標(biāo)和整個(gè)區(qū)域的寬度和高度。然后遍歷數(shù)組A中的元素,每遍歷到的一個(gè)將對(duì)其進(jìn)行操作的元素稱為當(dāng)前元素。其與目標(biāo)元素的位置關(guān)系如圖3所示,從前述可知,這些元素包括顯示部分和不可見部分。首先取當(dāng)前元素的顯示區(qū)域,將此區(qū)域與區(qū)域B取交集并將結(jié)果更新到區(qū)域B,對(duì)每次遍歷到的元素進(jìn)行同樣的更新操作直到遍歷結(jié)束。此時(shí)獲取區(qū)域B相對(duì)于目標(biāo)元素區(qū)域的位置(對(duì)區(qū)域B左上進(jìn)行坐標(biāo)轉(zhuǎn)換即可得到)并將區(qū)域B中的圖像保存到內(nèi)存中。
下一步類似區(qū)域B,定義一個(gè)臨時(shí)區(qū)域E,遍歷數(shù)組A,判斷遍歷到的元素是否可滾動(dòng),如是則進(jìn)行滾動(dòng),此后類似區(qū)域B的操作一樣不斷更新區(qū)域E直到找不到至少一個(gè)可進(jìn)行下一步滾動(dòng)的元素為止,由于受到區(qū)域E和每次操作的當(dāng)前元素的區(qū)域大小的限制,對(duì)于一個(gè)可滾動(dòng)的元素來說,可能不能在一次滾動(dòng)中完成整個(gè)元素的獲取,因此對(duì)于一個(gè)元素可能要通過滾動(dòng)程序中設(shè)定的元素指針F在每次操作后指向該元素的下一個(gè)位置,計(jì)算此次滾動(dòng)得到的區(qū)域并保存圖像到內(nèi)存,再循環(huán)進(jìn)行前述不斷更新區(qū)域E的操作。當(dāng)遍歷數(shù)組A再也找不到至少一個(gè)可進(jìn)行下一步滾動(dòng)的元素之后,將內(nèi)存中的圖像保存到磁盤然后遍歷數(shù)組A將每個(gè)元素恢復(fù)到原來的滾動(dòng)位置。
本發(fā)明的實(shí)施例如圖2所示,其為滾動(dòng)窗口截圖方式。當(dāng)用戶選擇進(jìn)入這種模式時(shí),首先判斷鼠標(biāo)是否處于網(wǎng)頁(yè)頁(yè)面邊界區(qū)域的位置,之后向?qū)?yīng)的頁(yè)面邊界方向自動(dòng)滾動(dòng)頁(yè)面。然后確定截圖區(qū)域,獲取當(dāng)前的網(wǎng)頁(yè)的html或body作為目標(biāo)元素。Html或body為網(wǎng)頁(yè)編程當(dāng)中的命令,用于界定網(wǎng)頁(yè)當(dāng)中的元素,其用法為網(wǎng)頁(yè)編程人員所熟知。此后的步驟基本與單元截圖方式相似,即首先判斷元素是否可滾動(dòng),然后保存目標(biāo)元素及其當(dāng)前滾動(dòng)目標(biāo)位置信息,將元素滾動(dòng)到起始位置,接著同單元截圖方式類似,通過建立臨時(shí)區(qū)域并不斷更新的方法獲取目標(biāo)元素的屏幕可見部分及其相對(duì)目標(biāo)元素的位置保存到內(nèi)存中;然后計(jì)算元素可以進(jìn)行下一步可以滾動(dòng)的水平和或垂直滾動(dòng)偏移量,取最小值(目標(biāo)元素的寬/高,通過目標(biāo)元素當(dāng)前顯示區(qū)域右/下一目標(biāo)元素總區(qū)域右/下這一計(jì)算式來獲取)。此后判斷目標(biāo)元素是否可繼續(xù)下一步滾動(dòng),如是重復(fù)上述滾動(dòng)獲取過程,否則則說明已經(jīng)完全得到用戶選擇的截取目標(biāo),這時(shí)將內(nèi)存中的位圖保存到磁盤上,最后將目標(biāo)元素恢復(fù)到原始的滾動(dòng)位置。
本發(fā)明的截取網(wǎng)頁(yè)內(nèi)容的方法,在單元截圖方式時(shí)可自動(dòng)獲取用戶選擇單元中包含的屏幕不可見部分的內(nèi)容,在滾動(dòng)窗口截圖方式時(shí),可根據(jù)用戶鼠標(biāo)滾動(dòng)不斷滾屏獲取網(wǎng)頁(yè)內(nèi)容,從而獲取到一屏無(wú)法完全顯示的網(wǎng)頁(yè)內(nèi)容。方便了用戶對(duì)網(wǎng)頁(yè)內(nèi)容的截取。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種截取網(wǎng)頁(yè)內(nèi)容的方法,包括如下步驟A、用戶選擇截取目標(biāo);B、根據(jù)截取目標(biāo)獲取網(wǎng)頁(yè)內(nèi)容;C、將獲取的網(wǎng)頁(yè)內(nèi)容保存到磁盤;其特征在于,所述步驟B包含如下過程B1、判斷步驟A中的所述截取目標(biāo)是否包含屏幕不可見部分,如不是則轉(zhuǎn)入步驟C,否則繼續(xù)下一步;B2、計(jì)算并獲取所述截取目標(biāo)所包含區(qū)域的網(wǎng)頁(yè)內(nèi)容后轉(zhuǎn)入步驟C。
2.如權(quán)利要求1所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟B2包含如下過程B21、計(jì)算獲取截取目標(biāo)屏幕可見部分圖像并保存到內(nèi)存;B22、計(jì)算截取目標(biāo)可滾動(dòng)的下一步位置并將截取目標(biāo)進(jìn)行滾動(dòng)從而得到截取目標(biāo)的屏幕不可見部分;B23、判斷截取目標(biāo)是否可繼續(xù)滾動(dòng),如是則保存圖像到內(nèi)存后轉(zhuǎn)入B22,否則轉(zhuǎn)入步驟C。
3.如權(quán)利要求2所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟B21包含如下過程B211、獲取截取目標(biāo)的區(qū)域數(shù)據(jù);B212、定義一位置和大小與目標(biāo)區(qū)域相同的臨時(shí)區(qū)域;B213、將截取目標(biāo)的屏幕可見部分與臨時(shí)區(qū)域取交集并根據(jù)結(jié)果更新臨時(shí)區(qū)域;B214、獲取更新后的臨時(shí)區(qū)域相對(duì)于截取目標(biāo)區(qū)域的位置;B215、將更新后的臨時(shí)區(qū)域中對(duì)應(yīng)的圖像按上步得到的位置存入內(nèi)存。
4.如權(quán)利要求3所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟A為單元截圖方式時(shí),所述步驟B1還包含如下過程B11、保存截取目標(biāo)元素及其位置信息至一數(shù)組;B12、獲取截取目標(biāo)父元素及其位置信息并保存至所述數(shù)組;B13、將前述兩步保存的元素滾動(dòng)到正好可顯示截取目標(biāo)元素的位置。
5.如權(quán)利要求4所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟B213是通過遍歷所述數(shù)組來實(shí)現(xiàn)的。
6.如權(quán)利要求1或2所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟A為單元截圖方式時(shí),所述步驟B1還包含如下過程B11、保存截取目標(biāo)元素及其位置信息至一數(shù)組;B12、獲取截取目標(biāo)父元素及其位置信息并保存至所述數(shù)組;B13、將前述兩步保存的元素滾動(dòng)到正好可顯示截取目標(biāo)元素的位置。
7.如權(quán)利要求6所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟B22是通過遍歷所述數(shù)組來實(shí)現(xiàn)的。
8.如權(quán)利要求1至3任一所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟A為滾動(dòng)窗口截圖方式時(shí),其包含如下過程A1、用戶選擇滾動(dòng)截圖方式;A2、向?qū)?yīng)頁(yè)面邊界方向自動(dòng)滾動(dòng)頁(yè)面;A3、確定截圖區(qū)域;A4、獲取當(dāng)前網(wǎng)頁(yè)的html或body。
9.如權(quán)利要求8所述的截取網(wǎng)頁(yè)內(nèi)容的方法,其特征在于,所述步驟B1還包含如下過程首先保存截取目標(biāo)元素及其當(dāng)前滾動(dòng)位置信息;其次將目標(biāo)元素滾動(dòng)到正好可顯示目標(biāo)元素的位置。
全文摘要
本發(fā)明公開了一種截取網(wǎng)頁(yè)內(nèi)容的方法,包括如下步驟A.用戶選擇截取目標(biāo);B.根據(jù)截取目標(biāo)獲取網(wǎng)頁(yè)內(nèi)容;C.將獲取的網(wǎng)頁(yè)內(nèi)容保存到磁盤;所述步驟B包含如下過程B1.判斷步驟A中的所述截取目標(biāo)是否包含屏幕不可見部分,如不是則轉(zhuǎn)入步驟C,否則繼續(xù)下一步;B2.計(jì)算并獲取所述截取目標(biāo)所包含區(qū)域的網(wǎng)頁(yè)內(nèi)容后轉(zhuǎn)入步驟C。本發(fā)明的截取網(wǎng)頁(yè)內(nèi)容的方法,可以根據(jù)用戶的選擇而截取到屏幕不可見部分的網(wǎng)頁(yè)內(nèi)容,從而避免了需要一屏一屏的截取網(wǎng)頁(yè)內(nèi)容,方便了用戶。
文檔編號(hào)G06F17/30GK101021872SQ20071007286
公開日2007年8月22日 申請(qǐng)日期2007年1月17日 優(yōu)先權(quán)日2007年1月17日
發(fā)明者林峰 申請(qǐng)人:深圳市光芒科技有限公司