本發(fā)明涉及網(wǎng)絡(luò)資源地址技術(shù)領(lǐng)域,尤其涉及一種基于windowlocation的url解析的方法。
背景技術(shù):
url(uniformresourcelocator,統(tǒng)一資源定位符)是用于完整地描述internet上網(wǎng)頁和其他資源的地址的一種標(biāo)識方法。
internet上的每一個網(wǎng)頁都具有一個唯一的名稱標(biāo)識,通常稱之為url地址,這種地址可以是本地磁盤,也可以是局域網(wǎng)上的某一臺計算機,更多的是internet上的站點。url就是web地址,俗稱網(wǎng)址。url是統(tǒng)一的,因為它們采用相同的基本語法,無論尋址哪種特定類型的資源或描述通過哪種機制獲取該資源。url的一般格式為:
protocol://hostname[:port]/path/[;parameters][?query]#fragment;
url解析就是從完整的url地址中提取所需的參數(shù)。這些參數(shù)包括:
1、protocol(協(xié)議):指定使用的傳輸協(xié)議,最常用的是http協(xié)議,其他還有ftp、https等。
2、hostname(主機名):指存放資源的服務(wù)器的域名系統(tǒng)(dns)主機名或ip地址。
3、port(端口號):為整數(shù),可選,省略是使用默認(rèn)端口號,各種傳輸協(xié)議都有默認(rèn)的端口號,比如http的默認(rèn)端口為80。如果在服務(wù)器上對端口進行重定義,url中就不能省略端口號這一項。
4、path(路徑):由“/”分隔開的字符串,可以被用來表示主機上的一個目錄或文件地址。
5、parameters(參數(shù)):這是一個用于指定特定參數(shù)的可選項。
6、query(查詢):可選,用于給動態(tài)網(wǎng)頁(比如使用php、jsp、asp等技術(shù)制作的網(wǎng)頁)傳遞參數(shù),可以有多個參數(shù),每個參數(shù)用“&”分隔開,而且每一個參數(shù)是一個鍵值對,表示為“鍵=值”的形式。
7、fragment(信息片段):是一個字符串,用于指定網(wǎng)絡(luò)資源中的片段,比如一個網(wǎng)頁中有多個名詞解釋,可以用這個參數(shù)定位到某一個名詞解釋上,也就是錨點。
現(xiàn)有技術(shù)的url解析方法都是采用字符索引或者正則表達式的形式,這些方法不僅實現(xiàn)復(fù)雜,而且容易出錯,并不能很方便的很對每一種特定格式的url地址形式進行解析,很浪費時間。而且對于開發(fā)團隊來說,會增加不必要的錯誤,影響整個項目的開發(fā)進程。
鑒于以上的傳統(tǒng)方法存在的問題,需要提供一種更加高效間接地url解析方法。
因此,本領(lǐng)域的技術(shù)人員亟需研究出一種可以準(zhǔn)確,快速獲取網(wǎng)絡(luò)資源地址需要的參數(shù),并高效地對參數(shù)進行分割解析,解析過程簡單又高效,減少開發(fā)人員的工作量,大大提高開發(fā)以及測試效率,縮短項目開發(fā)的周期的基于windowlocation的url解析的方法。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是提供一種基于windowlocation的url解析的方法,該基于windowlocation的url解析的方法可以準(zhǔn)確,快速獲取網(wǎng)絡(luò)資源地址需要的參數(shù),并高效地對參數(shù)進行分割解析,準(zhǔn)確地對網(wǎng)頁的元素集合進行url分類,解析過程簡單又高效,減少開發(fā)人員的工作量,大大提高開發(fā)以及測試效率,縮短項目開發(fā)的周期。
為解決上述技術(shù)問題,本發(fā)明提供了一種基于windowlocation的url解析的方法,包括以下步驟:
s1:服務(wù)器獲取完整的url地址;
s2:在url地址加載后,所述服務(wù)器使用
window.location.protocal函數(shù)向url地址的主機獲取完整的url協(xié)議名;
s3:url協(xié)議名加載后,所述服務(wù)器使用window.location的函數(shù)向主機獲取相關(guān)參數(shù),完成對url的解析;
其中,所述相關(guān)參數(shù)包括協(xié)議名稱、主機名稱、端口號、文件路徑、url查詢參數(shù)及url信息片段;
所述步驟s3的實現(xiàn)步驟包括:
s31:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.host函數(shù)獲得url的主機名稱;
s32:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.port函數(shù)獲得url的主機端口號;
s33:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.pathname函數(shù)獲得url的主機的文件路徑,對于得到的完整url的文件路徑,采用split函數(shù)對url的文件路徑的內(nèi)容進行分割得到具體的文件目錄或者網(wǎng)頁文件的名稱;
s34:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.search函數(shù)得到url的主機查詢參數(shù),利用split函數(shù)對多個查詢參數(shù)進行分割得到每一個參數(shù),或者利用split函數(shù)分割得到每個參數(shù)的具體鍵和值;
s35:所述服務(wù)器定義一個字符串用于存放函數(shù)的返回值,調(diào)用window.location.hash函數(shù)得到url的主機信息片段,對該window.location.hash函數(shù)進行賦值操作,改變url指向的錨點,跳轉(zhuǎn)到網(wǎng)頁中的其他信息片段。
優(yōu)選地,所述步驟s2的實現(xiàn)步驟包括:
s201:所述服務(wù)器定義一個字符串;
s202:對于得到的url地址,調(diào)用window.location.protocal函數(shù)獲取協(xié)議名,將該函數(shù)返回值賦予步驟s201定義的字符串;
其中,所述定義的字符串即為url協(xié)議名。
優(yōu)選地,所述基于windowlocation的url解析的方法還包括步驟:
s4:采用url分類策略根據(jù)分段集合q將url分割為n個片段,從左到右為q0,q1,...,qn-1,其中片段賦權(quán)值依次為
x0=n,x1=n-1,...,xn-1=1,區(qū)分相似url的主機,當(dāng)s(url',url”)≥dα?xí)r,則判斷url'和url”相似,將屬于相同集合q的url進行聚類;
所述url分類策略配置有函數(shù):
其中,
優(yōu)選地,所述基于windowlocation的url解析的方法還包括步驟:
s5:利用url區(qū)分策略,對網(wǎng)頁的元素集合hi進行url分類;
所述步驟s5的實現(xiàn)步驟包括:
s501:任取元素集合hi一個待分類的url,將其自成一類;
s502:從剩下的url中任選一個url,記為u;
s503:取和u具有最大相似度的類l,如果s(u,l)>dα,則將u添加到hi中;否則,u自成一類;
s504:判斷是否處理了元素集合中的所有url,如果是,則執(zhí)行步驟s505,否則,則執(zhí)行步驟s501;
s505:得到元素集合hi中url聚類的結(jié)果h1,h2,...,hm;
s506:將hi對應(yīng)的所有一類元素形成url區(qū)域塊。
采用了上述方法之后,服務(wù)器獲取完整的url地址;在url地址加載后,所述服務(wù)器使用window.location.protocal函數(shù)向url地址的主機獲取完整的url協(xié)議名,url協(xié)議名加載后,所述服務(wù)器使用window.location的函數(shù)向主機獲取相關(guān)參數(shù),完成對url的解析;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.host函數(shù)獲得url的主機名稱;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.port函數(shù)獲得url的主機端口號;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.pathname函數(shù)獲得url的主機的文件路徑,對于得到的完整url的文件路徑,采用split函數(shù)對url的文件路徑的內(nèi)容進行分割得到具體的文件目錄或者網(wǎng)頁文件的名稱;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.search函數(shù)得到url的主機查詢參數(shù),利用split函數(shù)對多個查詢參數(shù)進行分割得到每一個參數(shù),或者利用split函數(shù)分割得到每個參數(shù)的具體鍵和值;所述服務(wù)器定義一個字符串用于存放函數(shù)的返回值,調(diào)用window.location.hash函數(shù)得到url的主機信息片段,對該window.location.hash函數(shù)進行賦值操作,改變url指向的錨點,跳轉(zhuǎn)到網(wǎng)頁中的其他信息片段,該基于windowlocation的url解析的方法可以準(zhǔn)確,快速獲取網(wǎng)絡(luò)資源地址需要的參數(shù),并高效地對參數(shù)進行分割解析,準(zhǔn)確地對網(wǎng)頁的元素集合進行url分類,解析過程簡單又高效,減少開發(fā)人員的工作量,大大提高開發(fā)以及測試效率,縮短項目開發(fā)的周期。
附圖說明
圖1是本發(fā)明的一種基于windowlocation的url解析的方法的執(zhí)行流程圖;
圖2是本發(fā)明的一種基于windowlocation的url解析的方法的步驟s3實現(xiàn)流程圖;
圖3是本發(fā)明的一種基于windowlocation的url解析的方法的整體模型示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用于解釋本發(fā)明,并不用于限定本發(fā)明。
實施例1
請參閱圖1至圖2,
圖1是本發(fā)明的一種基于windowlocation的url解析的方法的執(zhí)行流程圖;
圖2是本發(fā)明的一種基于windowlocation的url解析的方法的步驟s3實現(xiàn)流程圖;
本發(fā)明公開了一種基于windowlocation的url解析的方法,包括以下步驟:
s1:服務(wù)器獲取完整的url地址;
s2:在url地址加載后,所述服務(wù)器使用
window.location.protocal函數(shù)向url地址的主機獲取完整的url協(xié)議名;
s3:url協(xié)議名加載后,所述服務(wù)器使用window.location的函數(shù)向主機獲取相關(guān)參數(shù),完成對url的解析;
s4:采用url分類策略根據(jù)分段集合q將url分割為n個片段,從左到右為q0,q1,...,qn-1,其中片段賦權(quán)值依次為x0=n,x1=n-1,...,xn-1=1,區(qū)分相似url的主機,當(dāng)s(url',url”)≥dα?xí)r,則判斷url'和url”相似,將屬于相同集合q的url進行聚類;
s5:利用url區(qū)分策略,對網(wǎng)頁的元素集合hi進行url分類;
其中,所述url分類策略配置有函數(shù):
其中,所述相關(guān)參數(shù)包括協(xié)議名稱、主機名稱、端口號、文件路徑、url查詢參數(shù)及url信息片段;
請再參閱圖3,圖3是本發(fā)明的一種基于windowlocation的url解析的方法的整體模型示意圖;
在本實施例,所述步驟s3的實現(xiàn)步驟包括:
所述步驟s3的實現(xiàn)步驟包括:
s31:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.host函數(shù)獲得url的主機名稱;
s32:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.port函數(shù)獲得url的主機端口號;
s33:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.pathname函數(shù)獲得url的主機的文件路徑,對于得到的完整url的文件路徑,采用split函數(shù)對url的文件路徑的內(nèi)容進行分割得到具體的文件目錄或者網(wǎng)頁文件的名稱;
s34:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.search函數(shù)得到url的主機查詢參數(shù),利用split函數(shù)對多個查詢參數(shù)進行分割得到每一個參數(shù),或者利用split函數(shù)分割得到每個參數(shù)的具體鍵和值;
s35:所述服務(wù)器定義一個字符串用于存放函數(shù)的返回值,調(diào)用window.location.hash函數(shù)得到url的主機信息片段,對該window.location.hash函數(shù)進行賦值操作,改變url指向的錨點,跳轉(zhuǎn)到網(wǎng)頁中的其他信息片段。
在本實施例,所述步驟s2的實現(xiàn)步驟包括:
s201:所述服務(wù)器定義一個字符串;
s202:所述對于得到的url地址,調(diào)用window.location.protocal函數(shù)獲取協(xié)議名,將該函數(shù)返回值賦予步驟s201定義的字符串;
其中,所述定義的字符串即為url協(xié)議名。
在本實施中,所述步驟s5的實現(xiàn)步驟包括:
s501:任取元素集合hi一個待分類的url,將其自成一類;
s502:從剩下的url中任選一個url,記為u;
s503:取和u具有最大相似度的類l,如果s(u,l)>dα,則將u添加到hi中;否則,u自成一類;
s504:判斷是否處理了元素集合中的所有url,如果是,則執(zhí)行步驟s505,否則,則執(zhí)行步驟s501;
s505:得到元素集合hi中url聚類的結(jié)果h1,h2,...,hm;
s506:將hi對應(yīng)的所有一類元素形成url區(qū)域塊。
實施例2
本發(fā)明公開了一種基于windowlocation的url解析的方法,包括以下步驟:
s1:服務(wù)器獲取完整的url地址;
s2:在url地址加載后,所述服務(wù)器使用window.location.protocal函數(shù)向url地址的存儲器獲取完整的url協(xié)議名;
s3:url協(xié)議名加載后,所述服務(wù)器使用window.location的函數(shù)向存儲器獲取相關(guān)參數(shù),完成對url的解析;
s4:采用url分類策略根據(jù)分段集合q將url分割為n個片段,從左到右為q0,q1,...,qn-1,其中片段賦權(quán)值依次為x0=n,x1=n-1,...,xn-1=1,區(qū)分相似url的主機,當(dāng)s(url',url”)≥dα?xí)r,則判斷url'和url”相似,將屬于相同集合q的url進行聚類;
s5:利用url區(qū)分策略,對網(wǎng)頁的元素集合hi進行url分類;
其中,所述url分類策略配置有函數(shù):
其中,所述相關(guān)參數(shù)包括協(xié)議名稱、存儲器名稱、端口號、文件路徑、url查詢參數(shù)及url信息片段;
在本實施例,所述步驟s2的實現(xiàn)步驟包括:
s201:所述服務(wù)器定義一個字符串;
s202:所述對于得到的url地址,調(diào)用
window.location.protocal函數(shù)獲取協(xié)議名,將該函數(shù)返回值賦予步驟s201定義的字符串;
其中,所述定義的字符串即為url協(xié)議名。
在本實施例,所述步驟s3的實現(xiàn)步驟包括:
s31:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.host函數(shù)獲得url的存儲器名稱;
s32:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.port函數(shù)獲得url的存儲器端口號;
s33:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.pathname函數(shù)獲得url的主機的文件路徑,對于得到的完整url的文件路徑,采用split函數(shù)對url的文件路徑的內(nèi)容進行分割得到具體的文件目錄或者網(wǎng)頁文件的名稱;
s34:所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.search函數(shù)得到url的存儲器查詢參數(shù),利用split函數(shù)對多個查詢參數(shù)進行分割得到每一個參數(shù),或者利用split函數(shù)分割得到每個參數(shù)的具體鍵和值;
s35:所述服務(wù)器定義一個字符串用于存放函數(shù)的返回值,調(diào)用window.location.hash函數(shù)得到url的存儲器信息片段,對該window.location.hash函數(shù)進行賦值操作,改變url指向的錨點,跳轉(zhuǎn)到網(wǎng)頁中的其他信息片段。
在本實施中,所述步驟s5的實現(xiàn)步驟包括:
s501:任取元素集合hi一個待分類的url,將其自成一類;
s502:從剩下的url中任選一個url,記為u;
s503:取和u具有最大相似度的類l,如果s(u,l)>dα,則將u添加到hi中;否則,u自成一類;
s504:判斷是否處理了元素集合中的所有url,如果是,則執(zhí)行步驟s505,否則,則執(zhí)行步驟s501;
s505:得到元素集合hi中url聚類的結(jié)果h1,h2,...,hm;
s506:將hi對應(yīng)的所有一類元素形成url區(qū)域塊。
采用了上述方法之后,服務(wù)器獲取完整的url地址;在url地址加載后,所述服務(wù)器使用window.location.protocal函數(shù)向url地址的主機獲取完整的url協(xié)議名,url協(xié)議名加載后,所述服務(wù)器使用window.location的函數(shù)向主機獲取相關(guān)參數(shù),完成對url的解析;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.host函數(shù)獲得url的主機名稱;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.port函數(shù)獲得url的主機端口號;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.pathname函數(shù)獲得url的主機的文件路徑,對于得到的完整url的文件路徑,采用split函數(shù)對url的文件路徑的內(nèi)容進行分割得到具體的文件目錄或者網(wǎng)頁文件的名稱;所述服務(wù)器定義一個用于存放函數(shù)的返回值的字符串,調(diào)用window.location.search函數(shù)得到url的主機查詢參數(shù),利用split函數(shù)對多個查詢參數(shù)進行分割得到每一個參數(shù),或者利用split函數(shù)分割得到每個參數(shù)的具體鍵和值;所述服務(wù)器定義一個字符串用于存放函數(shù)的返回值,調(diào)用window.location.hash函數(shù)得到url的主機信息片段,對該window.location.hash函數(shù)進行賦值操作,改變url指向的錨點,跳轉(zhuǎn)到網(wǎng)頁中的其他信息片段,該基于windowlocation的url解析的方法可以準(zhǔn)確,快速獲取網(wǎng)絡(luò)資源地址需要的參數(shù),并高效地對參數(shù)進行分割解析,準(zhǔn)確地對網(wǎng)頁的元素集合進行url分類,解析過程簡單又高效,減少開發(fā)人員的工作量,大大提高開發(fā)以及測試效率,縮短項目開發(fā)的周期。
同時,應(yīng)當(dāng)理解的是,以上僅為本發(fā)明的優(yōu)選實施例,不能因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效實現(xiàn)方法,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。