欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

JavaScript解析:讓搜索引擎看到更真實(shí)的網(wǎng)頁(yè)_SEO優(yōu)化教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:分析網(wǎng)站權(quán)重變化及快照異常問(wèn)題
和平站長(zhǎng)站3個(gè)月前權(quán)重還是1,現(xiàn)在權(quán)重升為2了,感到無(wú)比的高興,同時(shí)也有了很大的動(dòng)力,站長(zhǎng)網(wǎng)排名在前10了,個(gè)人站長(zhǎng)也在前30,感謝百度給了我希望,呵呵,現(xiàn)在從百度來(lái)路的域名已經(jīng)增加到上千了,流量真的是飆升啊!

長(zhǎng)期以來(lái),站長(zhǎng)們選擇使用Javascript來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)的動(dòng)態(tài)行為,這樣做的原因是多種多樣的,如加快頁(yè)面的響應(yīng)速度、降低網(wǎng)站流量、隱藏鏈接 或者嵌入廣告等。由于早期的搜索引擎沒(méi)有相應(yīng)的處理能力,導(dǎo)致在索引這類(lèi)網(wǎng)頁(yè)上往往出現(xiàn)問(wèn)題,可能無(wú)法收錄有價(jià)值的資源,也可能出現(xiàn)作弊。

引入Javascript解析的目的,正是為了解決上述兩方面的問(wèn)題,其結(jié)果也就是使搜索引擎可以更為清晰的了解用戶(hù)實(shí)際打開(kāi)該網(wǎng)頁(yè)時(shí)看到的效 果。比如有些網(wǎng)站會(huì)將用戶(hù)評(píng)論、評(píng)分等信息從網(wǎng)頁(yè)HTML中抽離,利用Javascript甚至AJAX等方法在頁(yè)面被打開(kāi)的時(shí)候動(dòng)態(tài)顯示出來(lái),早期的搜 索引擎此時(shí)能處理到的頁(yè)面內(nèi)容就是缺失的,由此會(huì)進(jìn)一步影響對(duì)該頁(yè)面索引價(jià)值的判斷。

要引入Javascript解析,需要考慮本身的設(shè)計(jì)與實(shí)現(xiàn)、解析速度和對(duì)系統(tǒng)其它方面影響等因素,本文通過(guò)一些典型的案例來(lái)分析如何設(shè)計(jì)并實(shí)現(xiàn)一套網(wǎng)頁(yè)Javascript解析系統(tǒng),并簡(jiǎn)要介紹這樣的系統(tǒng)對(duì)于搜索引擎其它部分的作用和影響。

一、發(fā)現(xiàn)頁(yè)面鏈接

一般來(lái)說(shuō),頁(yè)面鏈接都是以HTML中的A標(biāo)簽形式存在,鏈接URL標(biāo)記在href屬性中,但實(shí)際存在著一些網(wǎng)站會(huì)選擇更為“動(dòng)態(tài)”的方式,較為常見(jiàn)的方式有兩種:一種是動(dòng)態(tài)寫(xiě)入或調(diào)整A標(biāo)簽,另一種是在用戶(hù)點(diǎn)擊的時(shí)候觸發(fā)事件改變默認(rèn)的鏈接打開(kāi)方式。

1. 動(dòng)態(tài)寫(xiě)入或調(diào)整鏈接標(biāo)簽

抽象的說(shuō),網(wǎng)頁(yè)要實(shí)現(xiàn)這樣的效果,乃至后文描述的其它效果,與把大象放入冰箱極為類(lèi)似,分為三步:找到要寫(xiě)入/修改的目標(biāo)(找到大象),準(zhǔn)備好要寫(xiě)入/修改的內(nèi)容(打開(kāi)冰箱門(mén)),執(zhí)行寫(xiě)入/修改(把它放進(jìn)去)。

這三步操作映射到Javascript上,就是先后調(diào)用三組標(biāo)準(zhǔn)的瀏覽器功能函數(shù):頁(yè)面元素定位、數(shù)據(jù)準(zhǔn)備以及頁(yè)面修改。那么,Javascript解析的工作就是同樣提供出這樣的函數(shù),隨著被站長(zhǎng)的Javascript代碼調(diào)用自然的發(fā)現(xiàn)相應(yīng)的內(nèi)容和行為。

分析至此,所需實(shí)現(xiàn)的函數(shù)也就基本確定了,其中較為簡(jiǎn)單的包括:

document.getElementById // 定位

document.getElementsByTagName // 定位

document.getElementsByClassName // 定位

node.[firstChild/nextSibling/previousSibling/parentNode] // 定位

document.[createElement/createTextNode] // 創(chuàng)建鏈接

node.[appendChild/insertBefore/innerHTML=?] // 寫(xiě)入內(nèi)容

element.getAttribute, element.setAttribute // 設(shè)置屬性

element.href = ? // 設(shè)置屬性

至于要寫(xiě)入的內(nèi)容,可能是以數(shù)組等形式保存在Javascript種,也可能是使用AJAX動(dòng)態(tài)加載。前者屬于Javascript語(yǔ)言的內(nèi)置功能,此處不再?gòu)?fù)述;后者是一個(gè)單獨(dú)的話題,會(huì)在后文專(zhuān)門(mén)討論。

2. 點(diǎn)擊時(shí)觸發(fā)事件改變默認(rèn)的鏈接打開(kāi)方式

頁(yè)面這樣做的原因不一,有的是為了隱藏鏈接,有的是為了實(shí)現(xiàn)彈出窗口,有的則是為了程序拼接URL,還有的是做檢查看是否應(yīng)該打開(kāi)鏈接等等。但所有這些原因都對(duì)應(yīng)著同樣的實(shí)現(xiàn)方法:添加click事件。

添加click事件的方法有三種:

將A標(biāo)簽的href屬性設(shè)置為“javascript:func(…)”的形式

設(shè)置A標(biāo)簽的onclick屬性,設(shè)置為onclick=”js_code” 的形式

調(diào)用事件綁定函數(shù),如my_link_node.addEventListener(‘click’, func, false)

支持這三種方法本身是較為簡(jiǎn)單的,需要注意的地方在于如何觸發(fā)這樣的click事件,以及如何在觸發(fā)之后截獲目的URL。

對(duì)于觸發(fā)事件而言,首先需要收集到所有可能的click事件,而后再依次觸發(fā)。但對(duì)于每一個(gè)要觸發(fā)的click而言,實(shí)際觸發(fā)之前必須先檢查其是否還存在,這是由于在其之前的click事件很可能已經(jīng)把當(dāng)前這個(gè)click刪除掉了。

要做到截獲URL,首先要實(shí)現(xiàn)相關(guān)的頁(yè)面跳轉(zhuǎn)函數(shù),既location.href = ?,window.open等。而后通過(guò)設(shè)置一系列標(biāo)志,將本次點(diǎn)擊和頁(yè)面跳轉(zhuǎn)關(guān)連起來(lái),如此也就得到了目標(biāo)URL。

二、動(dòng)態(tài)頁(yè)面內(nèi)容

頁(yè)面動(dòng)態(tài)內(nèi)容是一種提升頁(yè)面加載速度、增強(qiáng)網(wǎng)站技術(shù)靈活性的手段,可以將那些會(huì)改變的內(nèi)容(如評(píng)論、評(píng)分等)抽離,使頁(yè)面分為靜態(tài)和動(dòng)態(tài)兩部分:靜態(tài)內(nèi)容可以使用緩存等方法加快頁(yè)面顯示速度、降低網(wǎng)站流量;動(dòng)態(tài)內(nèi)容則有格式簡(jiǎn)單好生成的優(yōu)勢(shì),同時(shí)也能節(jié)省流量。

另一方面,動(dòng)態(tài)內(nèi)容也是加載廣告和內(nèi)容作弊的重要方法,最常見(jiàn)的就是寫(xiě)入iframe,這對(duì)于早期搜索引擎而言有極大的隱蔽性。

在技術(shù)層次上,動(dòng)態(tài)頁(yè)面內(nèi)容所需要的工作與上一節(jié)“動(dòng)態(tài)寫(xiě)入或調(diào)整A標(biāo)簽”在很大程度上是相同的,這里需要增加的是經(jīng)典的“document.write”方法。

該方法是最早的Javascript功能之一,用于向頁(yè)面直接寫(xiě)入一段HTML代碼,至今仍在廣泛使用。對(duì)于該方法,早期的搜索引擎都有所支 持,但方法基本限于字符匹配,僅能支持最直接的寫(xiě)入一個(gè)Javascript字符串的方式,對(duì)于稍微復(fù)雜的文本拼接顯得無(wú)能為力。但對(duì)于 Javascript解析而言,這段代碼終究是要符合語(yǔ)言規(guī)范的,因此就能做到完整支持,處理文本拼接、條件判斷和混淆代碼等各種情況。

這里還需要討論的一點(diǎn)是嵌套的document.write,也就是通過(guò)document.write寫(xiě)入一個(gè)script標(biāo)簽,該標(biāo)簽內(nèi)部是 另一段document.write。這類(lèi)問(wèn)題在跳轉(zhuǎn)作弊頁(yè)面中屢見(jiàn)不鮮,對(duì)其支持就不只需要Javascript解析,還需要HTML解析器能夠支持處 理嵌套的HTML寫(xiě)入功能,這里就不加以分析了。

通過(guò)上述方法,無(wú)論是網(wǎng)頁(yè)的主體信息,還是廣告或其它輔助信息,都會(huì)被暴露出來(lái),從而更好的理解站長(zhǎng)意圖。

三、網(wǎng)頁(yè)跳轉(zhuǎn)

網(wǎng)頁(yè)跳轉(zhuǎn)在有些情況下是達(dá)到頁(yè)面效果的必要選擇,但同樣會(huì)用于作弊。在技術(shù)上,多以下面兩種方式出現(xiàn):

直接調(diào)用頁(yè)面跳轉(zhuǎn)函數(shù)

針對(duì)搜索引擎的UA、referer等調(diào)用頁(yè)面跳轉(zhuǎn)函數(shù)

這里要實(shí)現(xiàn)識(shí)別,最核心的就是實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)函數(shù):location對(duì)象。由于這是技術(shù)上唯一的Javascript跳轉(zhuǎn)函數(shù),所以無(wú)論頁(yè)面的 Javascript如何撰寫(xiě)如何混淆,最終都會(huì)調(diào)用該函數(shù)。因此,盡管不同頁(yè)面的跳轉(zhuǎn)代碼看上去五花八門(mén),但識(shí)別出來(lái)卻是簡(jiǎn)單的。

四、關(guān)于AJAX

AJAX是極為常見(jiàn)的網(wǎng)頁(yè)技術(shù),根本上說(shuō)就是在網(wǎng)頁(yè)顯示期間,動(dòng)態(tài)的從互聯(lián)網(wǎng)上獲取一段數(shù)據(jù)(可能是HTML也可能是其它),經(jīng)過(guò)處理后加以顯示。

對(duì)于該技術(shù),根本的工作并不在于XMLHttpRequest對(duì)象的實(shí)現(xiàn),而是在于對(duì)搜索引擎爬蟲(chóng)架構(gòu)的影響。眾所周知,爬蟲(chóng)抓取頁(yè)面,遍歷其 鏈接,再依次抓取的形式設(shè)計(jì)的,其工作主要集中在調(diào)度和控制抓取壓力上,抓取器本身較為簡(jiǎn)單,通常不具備抓取后即時(shí)執(zhí)行Javascript并抓取 AJAX數(shù)據(jù)的能力,因此需要技術(shù)升級(jí)方可支持AJAX。

對(duì)抓取器的分析超出了本文的范圍,有興趣的讀者可以查看其它相關(guān)文獻(xiàn)。

總結(jié)

通過(guò)前面的案例分析,我們總結(jié)出了實(shí)現(xiàn)Javascript解析所需要的基本工作,此外再增加一定的基礎(chǔ)性建設(shè)就能構(gòu)成一套較為完整的系統(tǒng)了。這里我們?cè)俅握硪幌拢瑢⑵浞譃槿齻(gè)部分:

1.  在HTML解析器中嵌入Javascript語(yǔ)言引擎,語(yǔ)言引擎可以選擇V8、SpiderMonkey等成熟的開(kāi)源方案。

2.  實(shí)現(xiàn)所需的功能函數(shù),具體可參考W3C的相關(guān)HTML和DOM規(guī)范。

3.  作為一個(gè)直接推論,需要收錄所謂的.js文件,這是Javascript解析所需要“解析”的源代碼。

本文中介紹的功能僅是一部分較為常見(jiàn)的Javascript功能,要讓搜素引擎真正看到實(shí)際的頁(yè)面還需要進(jìn)一步實(shí)現(xiàn)其它需要的功能,此外還需要配合對(duì)HTML、CSS、圖片等資源的支持。

最后,對(duì)于希望使用Javascript的站長(zhǎng)來(lái)說(shuō),本文給出如下建議:

1.  不要使用過(guò)于復(fù)雜的Javascript技術(shù),這不利于搜索引擎的收錄

2.  不要阻止對(duì).js文件的收錄,否則會(huì)限制Javascript解析的能力

3.  合理的劃分站點(diǎn)的靜態(tài)部分和動(dòng)態(tài)部分

分享:網(wǎng)站編輯9大SEO技巧
1. 文章當(dāng)中最好需要出現(xiàn)一個(gè)網(wǎng)站核心關(guān)鍵詞 所謂的網(wǎng)站核心的關(guān)鍵詞就是指與網(wǎng)站內(nèi)容相關(guān)性比較高并且是比較受歡迎的關(guān)鍵詞,當(dāng)然還有相當(dāng)高的轉(zhuǎn)化率 2. 文章標(biāo)題當(dāng)中需要出現(xiàn) 關(guān)鍵詞 。 關(guān)鍵字在標(biāo)題標(biāo)簽h1中出現(xiàn),是網(wǎng)頁(yè)中突出程 度最高的地方之一。關(guān)鍵字出現(xiàn)在文

作者:慕榮公子/所屬分類(lèi):SEO優(yōu)化教程/更新時(shí)間:2012-07-06
相關(guān)SEO優(yōu)化教程