天天看點

如何檢視robots協定?怎麼寫?

  如何檢視robots協定?怎麼寫?

  怎麼寫robots協定?

  當一個搜尋蜘蛛通路一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜尋機器人就會按照該檔案中的内容來确定通路的範圍;如果該檔案不存在,所有的搜尋蜘蛛将能夠通路網站上所有沒有被密碼保護的頁面。

  一、什麼是Robots協定

  Robots協定(也稱為爬蟲協定、機器人協定等)的全稱是“網絡爬蟲排除标準”(Robots Exclusion Protocol),網站通過Robots協定告訴搜尋引擎哪些頁面可以抓取,哪些頁面不能抓取,對于seo來講,意義重大。

  robots是一個協定,而不是一個指令。robots.txt檔案是一個文本檔案,是放置在網站根目錄下,使用任何一個常見的文本編輯器,就可以建立和編輯它。robots.txt是搜尋引擎中通路網站的時候要檢視的第一個檔案,其主要的作用就是告訴蜘蛛程式在伺服器上什麼檔案是可以被檢視的。

  robots協定檔案的寫法及文法屬性解釋-seo

  如果将網站視為一個房間,robots.txt就是主人在房間門口懸挂的“請勿打擾”或“歡迎進入”的提示牌。這個檔案告訴來訪的搜尋引擎哪些房間可以進入和參觀,哪些房間因為存放貴重物品,或可能涉及住戶及訪客的隐私而不對搜尋引擎開放。但robots.txt不是指令,也不是防火牆,如同守門人無法阻止竊賊等惡意闖入者。

  是以,seo建議各位站長僅當您的網站包含不希望被搜尋引擎收錄的内容時,才需要使用robots.txt檔案,如果您希望搜尋引擎收錄網站上所有内容,請勿建立robots.txt檔案。

  二、Robots協定的原則

  Robots協定是國際網際網路界通行的道德規範,基于以下原則建立:

  1、搜尋技術應服務于人類,同時尊重資訊提供者的意願,并維護其隐私權;

  2、網站有義務保護其使用者的個人資訊和隐私不被侵犯。

  三、Robots協定的寫法

  robots.txt放到一個站點的根目錄下即可,一個robots.txt隻能控制相同協定,相同端口,相同站點的網頁抓取政策。

  1、robots.txt的正常寫法

  最簡單的robots.txt隻有兩條規則:

  User-agent:指定對哪些爬蟲生效

  Disallow:指定要屏蔽的網址

  整個檔案分為x節,一節由y個User-agent行和z個Disallow行組成。一節就表示對User-agent行指定的y個爬蟲屏蔽z個網址。這裡x>=0,y>0,z>0。x=0時即表示空檔案,空檔案等同于沒有robots.txt。

  下面詳細介紹這兩條規則:

  (1)、User-agent

  爬蟲抓取時會聲明自己的身份,這就是User-agent,沒錯,就是http協定裡的User-agent,robots.txt利用User-agent來區分各個引擎的爬蟲。

  舉例說明:google網頁搜尋爬蟲的User-agent為Googlebot,下面這行就指定google的爬蟲。

  User-agent:Googlebot

  如果想指定所有的爬蟲怎麼辦?不可能窮舉啊,可以用下面這一行:

  User-agent: *

  可能有的同學要問了,我怎麼知道爬蟲的User-agent是什麼?這裡提供了一個簡單的清單:爬蟲清單

  當然,你還可以查相關搜尋引擎的資料得到官方的資料,比如說google爬蟲清單,百度爬蟲清單

  (2)、Disallow

  Disallow行列出的是要攔截的網頁,以正斜線 (/) 開頭,可以列出特定的網址或模式。

  要屏蔽整個網站,使用正斜線即可,如下所示:

  Disallow: /

  要屏蔽某一目錄以及其中的所有内容,在目錄名後添加正斜線,如下所示:

  Disallow: /無用目錄名/

  要屏蔽某個具體的網頁,就指出這個網頁,如下所示:

  Disallow: /網頁.html

  舉例:

  User-agent: baiduspider

  User-agent: Googlebot

  seo解釋:意思也就是禁止百度蜘蛛和Google蜘蛛抓取所有文章

  2、robots.txt的進階寫法

  首先聲明:進階玩法不是所有引擎的爬蟲都支援,一般來說,作為搜尋引擎seo技術上司者的谷歌支援的最好。

  (1)、allow

  如果需要屏蔽seo1-seo100,但是不屏蔽seo50,那我們該怎麼辦呢?

  方案1:

  Disallow:/seo1/

  Disallow:/seo2/

  ...

  Disallow:/seo49/

  Disallow:/seo51/

  Disallow:/seo100/

  方案2:

  Disallow:/seo

  Allow:/seo50/

  對比以上2個方案,大家應該知道allow的用法了吧,如果你網站目前也有這個需求的話,seo技術建議你可以使用方案2來解決。

  但如果想屏蔽seo50下面的檔案seo.htm,又該怎麼辦呢?

  Disallow:/seo50/seo.html

  聰明的你一定能發現其中的規律,對吧?誰管的越細就聽誰的。

  (2)、sitemap

  前面說過爬蟲會通過網頁内部的連結發現新的網頁,但是如果沒有連接配接指向的網頁怎麼辦?或者使用者輸入條件生成的動态網頁怎麼辦?能否讓網站管理者通知搜尋引擎他們網站上有哪些可供抓取的網頁?這就是sitemap。

  最簡單的Sitepmap形式就是XML檔案,在其中列出網站中的網址以及關于每個網址的其他資料(上次更新的時間、更改的頻率以及相對于網站上其他網址的重要程度等等),利用這些資訊搜尋引擎可以更加智能地抓取網站内容。

  新的問題來了,爬蟲怎麼知道這個網站有沒有提供sitemap檔案,或者說網站管理者生成了sitemap(可能是多個檔案),爬蟲怎麼知道放在哪裡呢?

  由于robots.txt的位置是固定的,于是大家就想到了把sitemap的位置資訊放在robots.txt裡,這就成為robots.txt裡的新成員了,比如:

  考慮到一個網站的網頁衆多,sitemap人工維護不太靠譜,對此,seo建議你可以使用google提供了工具可以自動生成sitemap。

  (3)、meta tag

  其實嚴格來說這部分内容不屬于robots.txt,不過也算非常相關,我也不知道放哪裡合适,暫且放到這裡吧。

  robots.txt的初衷是為了讓網站管理者管理可以出現在搜尋引擎裡的網站内容。但是,即使使用robots.txt檔案讓爬蟲無法抓取這些内容,搜尋引擎也可以通過其他方式找到這些網頁并将它添加到索引中。

  例如,其他網站仍可能連結到該網站,是以,網頁網址及其他公開的資訊(如指向相關網站的連結中的定位文字或開放式目錄管理系統中的标題)有可能會出現在引擎的搜尋結果中,如果想徹底對搜尋引擎隐身那咋整呢?seo給你的答案是:元标記,即meta tag。

  比如要完全阻止一個網頁的内容列在搜尋引擎索引中(即使有其他網站連結到此網頁),可使用noindex元标記。隻要搜尋引擎檢視該網頁,便會看到noindex元标記并阻止該網頁顯示在索引中,這裡注意noindex元标記提供的是一種逐頁控制對網站的通路的方式。

  比如:要防止所有搜尋引擎将網站中的網頁編入索引,那你就可以在網頁的頭部代碼部分添加:

  

  這裡的name取值可以設定為某個搜尋引擎的User-agent進而指定屏蔽某一個搜尋引擎。

  除了noindex外,還有其他元标記,比如說nofollow,禁止爬蟲從此頁面中跟蹤連結。這裡seo再提一句:noindex和nofollow在HTML 4.01規範裡有描述,但是其他tag的在不同引擎支援到什麼程度各不相同,還請讀者自行查閱各個引擎的說明文檔。

  (4)、Crawl-delay

  除了控制哪些可以抓哪些不能抓之外,robots.txt還可以用來控制爬蟲抓取的速率。如何做到的呢?通過設定爬蟲在兩次抓取之間等待的秒數。

  Crawl-delay:5

  表示本次抓取後下一次抓取前需要等待5秒。

  seo提醒大家一點:google已經不支援這種方式了,不過在webmaster tools裡提供了一個功能可以更直覺的控制抓取速率。

  這裡插一句題外話,幾年前seo記得曾經有一段時間robots.txt還支援複雜的參數:Visit-time,隻有在visit-time指定的時間段裡,爬蟲才可以通路;Request-rate: 用來限制URL的讀取頻率,用于控制不同的時間段采用不同的抓取速率。

  後來估計支援的人太少,就漸漸的廢掉了,有興趣的博友可以自行研究一下,seo了解到的是目前google和baidu都已經不支援這個規則了,其他小的引擎公司貌似從來都沒有支援過。

  四、Robots協定中的文法屬性解釋

  Robots協定用來告知搜尋引擎哪些頁面能被抓取,哪些頁面不能被抓取;可以屏蔽一些網站中比較大的檔案,如圖檔,音樂,視訊等,節省伺服器帶寬;也可以屏蔽站點的一些死連結,友善搜尋引擎抓取網站内容;再或者是設定網站地圖連接配接,友善引導蜘蛛爬取頁面。

  User-agent: 這裡的代表的所有的搜尋引擎種類,*是一個通配符。

  Disallow: /admin/ 這裡定義是禁止爬尋admin目錄下面的目錄。

  Disallow: /mahaixiang/*.htm 禁止通路/mahaixiang/目錄下的所有以".htm"為字尾的URL(包含子目錄)。

  Disallow: /? 禁止通路網站中所有包含問号 (?) 的網址。

  Disallow: /.jpg$ 禁止抓取網頁所有的.jpg格式的圖檔。

  Disallow:/mahaixiang/abc.html 禁止爬取ab檔案夾下面的adc.html檔案。

  Allow: /mahaixiang/ 這裡定義是允許爬尋mahaixiang目錄下面的目錄。

  Allow: /mahaixiang 這裡定義是允許爬尋mahaixiang的整個目錄。

  Allow: .htm$ 僅允許通路以".htm"為字尾的URL。

  Allow: .gif$ 允許抓取網頁和gif格式圖檔。

  Sitemap: /sitemap.html 告訴爬蟲這個頁面是網站地圖。

  Disallow: /?*

  Disallow: /seo/*.htm

  User-agent: EtaoSpider

  seo解釋:意思就是有禁止所有搜尋引擎來抓網站中所有包含問号 (?) 的網址和seo目錄下的.htm文章。同時,對etao完全屏蔽。

  五、Robots協定中的其它文法屬性

  1、Robot-version: 用來指定robot協定的版本号

  例子: Robot-version: Version 2.0

  2、Crawl-delay:雅虎YST一個特定的擴充名,可以通過它對我們的抓取程式設定一個較低的抓取請求頻率。

  您可以加入Crawl-delay:xx訓示,其中,“XX”是指在crawler程式兩次進入站點時,以秒為機關的最低延時。

  3、Crawl-delay:定義抓取延遲

  例子: Crawl-delay:/mahaixiang/

  4、Visit-time: 隻有在visit-time指定的時間段裡,robot才可以通路指定的URL,否則不可通路。

  例子: Visit-time: 0100-1300 #允許在淩晨1:00到13:00通路

  5、Request-rate: 用來限制URL的讀取頻率

  例子: Request-rate: 40/1m 0100 - 0759 在1:00到07:59之間,以每分鐘40次的頻率進行通路。

  Request-rate: 12/1m 0800 - 1300 在8:00到13:00之間,以每分鐘12次的頻率進行通路。

  seo點評:

  Robots協定是網站出于安全和隐私考慮,防止搜尋引擎抓取敏感資訊而設定的,搜尋引擎的原理是通過一種爬蟲spider程式,自動搜集網際網路上的網頁并擷取相關資訊。

  Robots協定代表了一種契約精神,網際網路企業隻有遵守這一規則,才能保證網站及使用者的隐私資料不被侵犯,違背Robots協定将帶來巨大安全隐憂。