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