當(dāng)一個(gè)搜索引擎程序抓取網(wǎng)站時(shí),其實(shí)我們可以通過相關(guān)文件進(jìn)行引導(dǎo)的。
簡單的理解搜索引擎蜘蛛會(huì)通過鏈接來了解您網(wǎng)站上的信息。但他們也在瀏覽網(wǎng)站代碼和目錄中的特定文件,標(biāo)簽和元素。接下來我們來看看這些元素都有哪些。
robots.txt
搜索引擎蜘蛛會(huì)在抓取網(wǎng)站時(shí),第一件事就是先抓取robots.txt文件。
對(duì)于復(fù)雜的網(wǎng)站,robots.txt文件是必不可少的。對(duì)于只有少數(shù)幾頁的小型網(wǎng)站,robots.txt文件可能不是必需的。沒有它,搜索引擎蜘蛛就會(huì)抓取網(wǎng)站上的所有內(nèi)容。
有兩種主要方法可以使用robots.txt文件指導(dǎo)搜素引擎蜘蛛。
1.首先,可以使用“禁止”指令。這會(huì)引導(dǎo)蜘蛛忽略特定的URL文件,文件擴(kuò)展名甚至整個(gè)網(wǎng)站的部分:
User-agent: Googlebot
Disallow: /example/
雖然disallow指令會(huì)阻止蜘蛛爬取您網(wǎng)站的特定部分(因此節(jié)省抓取預(yù)算),但它不一定會(huì)阻止該頁面被索引并顯示在搜索結(jié)果中,例如可以在此處看到:
2.另一種方法是使用 noindex 指令。Noindex某個(gè)頁面或文件不會(huì)阻止它被抓取,但是,它會(huì)阻止它被索引(或從索引中刪除它)。此robots.txt指令由Google非正式支持,并且完全不受Baidu/Bing支持:
User-agent:Googlebot
Noindex:/ example /
User-agent:*
Disallow:/ example /
顯然,由于這些網(wǎng)頁仍在被抓取,它們?nèi)詴?huì)使用您的抓取預(yù)算。
這是一個(gè)常常被忽略的問題:disallow指令實(shí)際上會(huì)撤消搜索引擎蜘蛛noindex標(biāo)記的工作。這是因?yàn)閐isallow阻止蜘蛛訪問網(wǎng)頁的內(nèi)容,從而阻止了看到和遵守meta標(biāo)簽。
另一個(gè)使用robots.txt協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。當(dāng)然,并不是所有蜘蛛都行為良好,有的甚至?xí)雎阅愕闹噶?尤其是尋找漏洞的惡意機(jī)器人)。
XML站點(diǎn)地圖
XML站點(diǎn)地圖幫助蜘蛛了解站點(diǎn)的基礎(chǔ)結(jié)構(gòu)。在這請(qǐng)注意,蜘蛛使用站點(diǎn)地圖作為線索,而不是權(quán)威指南,了解如何為網(wǎng)站建立索引。機(jī)器人還會(huì)考慮其他因素(例如您的內(nèi)部鏈接結(jié)構(gòu))來弄清楚您的網(wǎng)站是關(guān)于什么的。
使用可擴(kuò)展標(biāo)記語言(XML)站點(diǎn)地圖最重要的是確保發(fā)送給搜索引擎的消息與您的robots.txt文件一致。
不要將已經(jīng)通過robots.txt阻止的文件內(nèi)容發(fā)送給搜素引擎; 考慮到網(wǎng)站的抓取預(yù)算,所以,我們千萬別在這里犯錯(cuò)誤。
第二重要的是確保XML站點(diǎn)地圖僅包含規(guī)范URL,因?yàn)锽aidu/Google會(huì)將XML站點(diǎn)地圖視為規(guī)范化信號(hào)。
URL規(guī)范化
如果站點(diǎn)上有重復(fù)的內(nèi)容(我們應(yīng)該避免出現(xiàn)重復(fù)的內(nèi)容),那么rel =”canonical”鏈接元素告訴蜘蛛哪個(gè)URL應(yīng)該被認(rèn)為是主版本。
如果不使用canonical標(biāo)記,那么會(huì)導(dǎo)致網(wǎng)站上面不同URL但內(nèi)容相同的頁面被搜索引擎收錄,會(huì)讓搜索引擎誤認(rèn)為網(wǎng)站上面有很多重復(fù)頁面,從而降低對(duì)網(wǎng)站的評(píng)價(jià)。
分頁
正確設(shè)置rel =”next”和rel =”prev”鏈接元素非常重要。如果一個(gè)電子商務(wù)網(wǎng)站每個(gè)類別都有很多產(chǎn)品,如果想避免陷入搜索引擎的重復(fù)內(nèi)容過濾器,那么rel = next和rel = prev就非常重要。
假設(shè)網(wǎng)站有50種不同的型號(hào)可供選擇。在主類別頁面上,用戶可以查看前10個(gè)產(chǎn)品,每個(gè)產(chǎn)品都有一個(gè)產(chǎn)品名稱和一個(gè)縮略圖。然后,他們可以點(diǎn)擊“下一頁”來查看下一個(gè)10個(gè)結(jié)果,依此類推。
這些頁面中的每一個(gè)都會(huì)具有相同或非常相似的標(biāo)題,元描述和頁面內(nèi)容,因此主類別頁面的頭部應(yīng)該有一個(gè)rel =“next”(no rel =“prev”,因?yàn)樗堑谝豁?超文本標(biāo)記語言(HTML)。將rel =“next”和rel =“prev”鏈接元素添加到每個(gè)后續(xù)頁面會(huì)告訴抓取工具您要將這些頁面用作序列。
或者,如果我們?cè)搩?nèi)容有“查看全部”頁面,則可以在所有分頁頁面上規(guī)范化為“查看全部”頁面,并完全跳過rel = prev / next。不足之處在于,“查看全部”頁面可能會(huì)在搜索結(jié)果中顯示。如果網(wǎng)頁加載時(shí)間過長,搜索訪問者的跳出率會(huì)很高,這不是一件好事。
如果沒有rel =“canonical”,rel =“next”和rel =“prev”鏈接元素,這些頁面將相互競爭排名,并且有重復(fù)的內(nèi)容過濾的風(fēng)險(xiǎn)。正確實(shí)施,rel = prev / next將指示Google將序列視為一頁,或者rel = canonical將所有權(quán)重配給“查看全部”頁面。(關(guān)于分頁優(yōu)化技巧,各位同學(xué)可以查看這篇文章:頁面分頁優(yōu)化技巧)
常見的編碼問題
一個(gè)網(wǎng)站想要有很好的排名,是由很多因素共同決定的,其中,有一條很重要,那么就是:一個(gè)頁面擁有簡潔的代碼很重要(Google的移動(dòng)優(yōu)先索引)。這樣會(huì)讓搜索引擎更容易辨別頁面重要的內(nèi)容。很有可能會(huì)因一個(gè)小錯(cuò)誤導(dǎo)致蜘蛛使抓取者感到困惑,并導(dǎo)致搜索結(jié)果出現(xiàn)嚴(yán)重問題。
這里有幾個(gè)基本的要注意的:
1.無限空間(又名蜘蛛陷阱)。糟糕的編碼有時(shí)會(huì)無意中造成“無限空間”或“蜘蛛陷阱”。像指向相同內(nèi)容的無盡URL或以多種方式呈現(xiàn)相同信息的頁面等問題或包含不同日期無限日歷的日歷可能會(huì)導(dǎo)致蜘蛛卡住循環(huán),從而可能很快耗盡您的爬取預(yù)算。
在404錯(cuò)誤頁面的超文本傳輸協(xié)議安全(HTTP)標(biāo)頭中錯(cuò)誤地提供200狀態(tài)碼是另一種呈現(xiàn)方式,所以,正確的頁面狀態(tài)碼也是非常重要,也可以節(jié)約爬取預(yù)算。
當(dāng)一個(gè)蜘蛛遇到大量精簡或重復(fù)的內(nèi)容時(shí),它最終會(huì)放棄,這可能意味著它永遠(yuǎn)無法獲得最佳內(nèi)容,并且會(huì)在索引中產(chǎn)生一堆無用的頁面。
2.嵌入式內(nèi)容。如果希望蜘蛛有效抓取網(wǎng)站的內(nèi)容,最好讓事情變得簡單。搜索引擎蜘蛛經(jīng)常遇到JavaScript,框架,F(xiàn)lash和異步JavaScript和XML(AJAX)的問題。盡管Baidu/Google在抓取Javascript和AJAX等格式方面做得越來越好,但使用HTML是最安全的。
一個(gè)常見的例子是使用無限滾動(dòng)的網(wǎng)站。雖然它可能會(huì)提高可用性,但它可能會(huì)讓搜索引擎難以正確抓取您的內(nèi)容并將其編入索引。確保每篇文章或產(chǎn)品頁面都有唯一的URL,并且通過傳統(tǒng)的鏈接結(jié)構(gòu)連接,即使它以滾動(dòng)格式顯示。