
當(dāng)Google和其他搜索引擎索引網(wǎng)站的時(shí)候,他們并不執(zhí)行javascript,這似乎是在向單頁網(wǎng)站靠攏,其中許多單頁網(wǎng)站都依靠javascript——與傳統(tǒng)網(wǎng)站相比存在明顯的劣勢。
然而,單頁網(wǎng)站實(shí)際上和傳統(tǒng)的網(wǎng)站相比,在搜索引擎優(yōu)化(SEO)上的確是有優(yōu)勢的,因?yàn)镚oogle和其它網(wǎng)站已經(jīng)公認(rèn)了這方面的挑戰(zhàn)。他們已經(jīng)為單頁網(wǎng)站創(chuàng)建了一個(gè)機(jī)制——不僅將他們的動態(tài)頁面編入索引,還專門針對網(wǎng)絡(luò)爬蟲來優(yōu)化網(wǎng)站頁面。
在本文中,我們將主要關(guān)注Google,不過其它大型搜索引擎如Yahoo!和Bing都支持相同的機(jī)制。
Google是如何抓取單頁網(wǎng)站的
當(dāng)Google索引一個(gè)傳統(tǒng)網(wǎng)站的時(shí)候,它的網(wǎng)絡(luò)爬蟲(稱之為Googlebot)首先會掃描并檢索頂層URL內(nèi)容。一旦這一步驟完成,網(wǎng)絡(luò)爬蟲就會跟蹤網(wǎng)頁上的所有鏈接,同時(shí)還會給那些網(wǎng)頁編寫索引。接著就是重復(fù)性步驟——繼續(xù)跟蹤后續(xù)網(wǎng)頁,最終會給此網(wǎng)頁上和相關(guān)領(lǐng)域內(nèi)的所有內(nèi)容編寫索引。
當(dāng)Google試圖檢索一個(gè)單頁網(wǎng)站的時(shí)候,它所看到的只是一個(gè)單一的HTML空容器(通常情況下是一個(gè)空的div或body tag),所以根本沒有東西可以檢索,也沒有鏈接可以抓取,更沒辦法索引相應(yīng)的網(wǎng)站。
不過這還沒有結(jié)束,值得慶幸的是,Google和其它搜索引擎已經(jīng)意識到單頁網(wǎng)站的重要性,同時(shí)為開發(fā)者提供工具——為網(wǎng)絡(luò)爬蟲提供搜索信息,這可能是比傳統(tǒng)網(wǎng)站優(yōu)越的地方。
怎樣制作一個(gè)可抓取的單頁網(wǎng)站
制作一個(gè)可抓取的單頁網(wǎng)站的關(guān)鍵第一步就是必須意識到:如果一個(gè)網(wǎng)絡(luò)爬蟲或者一個(gè)使用Web瀏覽器的用戶提出需求的時(shí)候,網(wǎng)站的服務(wù)器必須給出相應(yīng)的回復(fù)。對于一般的訪客只需要給出正常的回復(fù)即可;但是對于一個(gè)網(wǎng)絡(luò)爬蟲,就需要回到優(yōu)化過的網(wǎng)頁,向網(wǎng)絡(luò)爬蟲展示訪客想要知道的內(nèi)容,同時(shí)還要將格式設(shè)置為網(wǎng)絡(luò)爬蟲輕易就能夠讀出的格式。
那么一個(gè)優(yōu)化過后、防網(wǎng)絡(luò)爬蟲的網(wǎng)站主頁看上去像什么樣子呢?有可能網(wǎng)站Logo或者其它的主要圖片會出現(xiàn)在搜索結(jié)果里,一些SEO優(yōu)化的文本可以解釋你所搜索的網(wǎng)站是做什么的,當(dāng)然了,Google最好是把網(wǎng)頁上的HTML鏈接編入檢索比較好。
不過網(wǎng)頁上沒有任何CSS樣式或復(fù)雜的HTML結(jié)構(gòu),也沒有任何javascript,或者是我們不希望谷歌索引連接到網(wǎng)站區(qū)域。下圖所顯示的就是瀏覽器(左)和網(wǎng)絡(luò)爬蟲(右)看的網(wǎng)頁的情形。
為網(wǎng)絡(luò)爬蟲自定義內(nèi)容
通常,單頁網(wǎng)站鏈接到不同的內(nèi)容會使用符號(# !)。另外,這些鏈接在對待訪客和網(wǎng)絡(luò)爬蟲的時(shí)候不會遵循同樣的方式。
案例:在單頁網(wǎng)站上鏈接到用戶頁面看上去就像/index.htm#!page=user:id,123,網(wǎng)絡(luò)爬蟲可能會看到#!并尋找?guī)в蠻RL /index.htm?_escaped_fragment_=page=user:id,123的網(wǎng)頁。由于網(wǎng)絡(luò)爬蟲會遵循這一模式并尋找URL,所以開發(fā)者可以給服務(wù)器編寫程序以回復(fù)帶有HTML快照的頁面需求,這在瀏覽器里也可以很正常的通過javascript來進(jìn)行渲染。
這些快照可能會被Google索引,但是在Google搜索結(jié)果里的任何人點(diǎn)擊清單都將被送往/index.htm#!page=user:id,123。在單頁網(wǎng)站里javascript也將從那里開始接管并按照計(jì)劃渲染網(wǎng)頁。這為單頁網(wǎng)站開發(fā)者提供了專門為谷歌和專門為用戶進(jìn)行調(diào)整網(wǎng)站的機(jī)會,而不必編寫訪客易讀的、網(wǎng)絡(luò)爬蟲易于理解的文本,頁面可以為訪客和爬蟲進(jìn)行優(yōu)化,除此之外不用擔(dān)心其它內(nèi)容。
網(wǎng)絡(luò)爬蟲通過網(wǎng)站的路徑是可以被控制的,開發(fā)者可以指導(dǎo)訪客從Google搜索結(jié)果到一個(gè)指定的主頁面。這可能需要在開發(fā)過程里花費(fèi)更多的工作,但是在搜索結(jié)果位置和客戶保留方面可以得到巨大的回報(bào)。
檢測谷歌的網(wǎng)絡(luò)爬蟲
檢測網(wǎng)絡(luò)爬蟲這可能需要一些命令行,但使用Chrome Developer Tools就能將這一檢測變得相當(dāng)容易,只要點(diǎn)擊按鈕、檢查工具框:
- 打開Chrome Developer Tools,點(diǎn)擊Google Toolbar右邊的帶有三條水平線的按鈕,然后從菜單中選擇Tools,再點(diǎn)擊Developer Tools。
- 在屏幕右下角是一個(gè)齒輪圖標(biāo):點(diǎn)擊進(jìn)去就能看到一些高級開發(fā)者選項(xiàng),例如禁用緩存,打開XMLHttpRequest記錄。
- 第二個(gè)標(biāo)簽標(biāo)記為Overrides,點(diǎn)擊User Agent標(biāo)簽旁邊的復(fù)選框,再從Chrome到Firefox、IE、iPads的下拉菜單里選擇任何數(shù)量的用戶代理,Googlebot的代理不是默認(rèn)選項(xiàng)。為了使用它,選擇其他復(fù)制并粘貼用戶代理字符串到輸入框里。
- 現(xiàn)在,該選項(xiàng)卡本身是當(dāng)作Googlebot的,當(dāng)我們在網(wǎng)站上打開任何URL的時(shí)候,應(yīng)該能看到網(wǎng)絡(luò)爬蟲頁面。
很多做SEO優(yōu)化的朋友都有這樣的困惑。在研究同行網(wǎng)站的時(shí)候,他們會發(fā)現(xiàn)有些網(wǎng)站設(shè)計(jì)的不是很好,網(wǎng)站的優(yōu)化布局也很一般。但是排名一直穩(wěn)定,位置很高,但是他們的網(wǎng)站在結(jié)構(gòu)、關(guān)鍵詞布局、內(nèi)容更新、外鏈發(fā)布等方面都做了很多,但是仍然無法超越這些網(wǎng)站。
版權(quán)聲明:本站部分文章,由 鄭州路普科技整理發(fā)表(信息來自互聯(lián)網(wǎng),不代表本站觀點(diǎn)),如有冒犯請聯(lián)系我們