robots文件也會被稱做robots協(xié)議、爬蟲協(xié)議等,它是搜索引擎與網(wǎng)站的一個協(xié)議文件,網(wǎng)站通過robots協(xié)議文件告訴搜索引擎爬蟲哪些頁面可以抓取,哪些頁面不可以抓取。
robots文件的存儲位置
robots文件是一個txt文本文檔文件,這個文件的正確命名為robots.txt,編輯好該文件后,需要放置于網(wǎng)站的根目錄下,也就是可以通過m.gimmickmag.com/robots.txt能夠正常的訪問即可。
robots文件的寫法
在介紹如何寫robots文件之前,我們先來看一個robots文件,如下:
#robots文件示例
#百度爬蟲抓取協(xié)議
User-agent: Baiduspider
Disallow: /help
Disallow: /trends/*/h*/
Disallow: /msh/msc0p1.html
Disallow: /plc0p1.html
Disallow: /*?*
Disallow: /job/t*
Disallow: /*.png$
Allow: /youqiseol
#對于其他所有搜索引擎爬蟲的抓取協(xié)議
User-Agent: *
Allow: /sitemap.xml
我們可以通過上面的示例看到,中間有很多的標簽,和“#”“*”“$”符號的使用,下面我們對這些一一說明:
符號“#”的作用
符號“#”,代表的是注釋內(nèi)容,通俗來說,就是你寫這個robots文件之后,給自己備注的一個提醒,它對搜索引擎爬行起不到任何作用,只是給你自己看的。同樣對搜索引擎爬蟲也沒有任何的影響。
User-agent介紹
該項的值用于描述搜索引擎robot的名字。在“robots.txt”文件中,如果有多條User-agent記錄說明有多個robot會受到“robots.txt”的限制,對該文件來說,至少要有一條User-agent記錄。如果該項的值設(shè)為*,則對任何搜索引擎爬蟲均有效,在“robots.txt”文件中,“User-agent:*”這樣的記錄只能有一條。如果在“robots.txt”文件中,加入“User-agent:Baiduspider”和若干Disallow、Allow行,那么名為“Baiduspider”的爬蟲就會受到相應(yīng)協(xié)議的限制。
Disallow介紹
該項的值用于描述不希望被搜索引擎爬蟲抓取的一類URL,這個值可以是一條完整的路徑,也可以是路徑的非空前綴,以Disallow項的值開頭的URL不會被搜索引擎爬蟲抓取。例如“Disallow:/help”禁止robot訪問/help.html、/helpabc.html、/help/index.html,而“Disallow:/help/”則允許robot訪問/help.html、/helpabc.html,不能訪問/help/。“Disallow:”后面什么都沒有寫,那么說明允許爬蟲抓取該網(wǎng)站的所有url,在“/robots.txt”文件中,至少要有一條Disallow記錄。如果“/robots.txt”不存在或者為空文件,則對于所有的搜索引擎robot,該網(wǎng)站都是開放的。
Allow介紹
該項的值用于描述希望被搜索引擎爬蟲抓取的一類URL,與Disallow項相似,這個值可以是一條完整的路徑,也可以是路徑的前綴,以Allow項的值開頭的URL是允許robot訪問的。例如“Allow:/jxbh”允許搜索引擎爬蟲抓取/jxbh.htm、/jxbh.html、/jxbh/com.html。一個網(wǎng)站的所有URL默認是Allow的,所以Allow通常與Disallow搭配使用,實現(xiàn)允許訪問一部分網(wǎng)頁同時禁止訪問其他所有URL的功能。
使用“*”和“$”符號
“*”匹配0個或多個任意字符
“$”匹配行結(jié)束符
如上面的示例,“Disallow:/*?*”不允許搜索引擎爬蟲抓取所有URL中帶“?”號的,“Disallow:/*.png$”不允許搜索引擎爬蟲抓取所有以.png結(jié)尾的鏈接,如http://m.gimmickmag.com/1.png是不允許被抓取的,但是http://m.gimmickmag.com/2.pngs就會被抓取(當然,png是圖片格式,實際中并沒pngs這種格式,這里只是為了方便說明演示)。
robots文件的作用
robots文件的作用在本文開始我們有提到這里在詳細的說一下,首先它是搜索引擎與網(wǎng)站之間的一個協(xié)議文件,用來告訴搜索引擎爬蟲哪些頁面可以抓取,哪些頁面不可以抓取。
但是實際工作中,我發(fā)現(xiàn)我有遇到這種情況,例如A目錄在一直以來都是允許搜索引擎爬蟲抓取的,并且也有了很大的索引數(shù)據(jù),但是這個目錄實際上是不允許被搜索引擎爬蟲抓取的,于是我就設(shè)置了“Disallow:/a”,禁止了搜索引擎抓取A目錄,幾天之后發(fā)現(xiàn),索引數(shù)據(jù)也已經(jīng)清零了。
所以robots協(xié)議文件不僅能夠屏蔽搜索引擎爬蟲的抓取,也可以把已經(jīng)收錄索引的無效數(shù)據(jù)進行快速的刪除。
robots文件書寫實例
禁止所有爬蟲抓取所有內(nèi)容
User-agent:*
Disallow: /
User-agent說明的所有搜索引擎爬蟲,而Disallow是告知搜索引擎爬蟲從根目錄你就不能抓取,最開始只有一個“/”代表根,通俗點解釋一下:m.gimmickmag.com/abc/1.html,其中/就是根,而abc就是一個目錄,1.html是一個文章頁。
只允許百度爬蟲抓取
User-agent: Baiduspider
Allow: /
User-agent: *
Disallow: /
第一組聲明Baiduspider(百度爬蟲的User-agent),允許抓取所有;而第二組聲明所有爬蟲,不允許抓取所有。有人可能會疑惑,這兩組是否沖突?實際上不會的,通俗點說就是:百度你來抓取,其他人別來!簡單明了。
如果你想只讓百度和Google來抓取,在不允許之前再加上一組即可,如下:
User-agent: Baiduspider
Allow: /
User-agent: Googlebot #google爬蟲的user-agent名稱
Allow: /
User-agent: *
Disallow: /
對所有搜索引擎的限制
User-Agent: *
Allow: /sitemap.xml #允許搜索引擎抓取sitemap.xml文件,但不建議把sitemap.xml文件寫到robots里。
Disallow: /help #不允許抓取 help下所有
Disallow: /
abc/*/d*/ #不允許抓取 abc/{任意內(nèi)容}/d{任意內(nèi)容}/,但可以抓取abc/{任意內(nèi)容}/d{任意內(nèi)容}/123.html等;
Disallow: /qwe/qwe1.html #不允許抓取該網(wǎng)頁
Disallow: /p1.html #不允許抓取該網(wǎng)頁
Disallow: /*?* #不允許抓取帶?號的URL
Disallow: /job/s* #不允許抓取 /job/s下的所有,包括/job/s
Disallow: /*.png$ #不允許抓取 任何以".png"結(jié)尾的鏈接
如上,每一行的含義都寫在了示例中。