Robots协议是Web站点和搜索引擎爬虫交互的一种方式,Robots.txt是存放在站点根目录下的一个纯文本文件。该文件可以指定搜索引擎爬虫只抓取指定的内容,或者是禁止搜索引擎爬虫抓取网站的部分或全部内容。当一个搜索引擎爬虫访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索引擎爬虫就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索引擎爬虫就沿着链接抓取。
另外,robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。
如果搜索引擎爬虫要访问的网站地址是http://www.w3.org/,那么robots.txt文件必须能够通过http://www.w3.org/robots.txt打开并看到里面的内容。
具体使用格式如下:
(1)User-agent:
用于描述搜索引擎爬虫的名字。在Robots.txt文件中,如果有多条User-agent记录,说明有多个搜索引擎爬虫会受到该协议的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则该协议对任何搜索引擎爬虫均有效,在Robots.txt文件中,“User-agent:*”这样的记录只能有一条。
(2)Disallow:
用于描述不希望被访问到的一个URL。这个URL可以是一条完整的路径,也可以是部分路径,任何以Disallow开头的URL均不会被Robot访问到。
下面举例来说明robots.txt的具体用法:
【例1】通过/robots.txt禁止所有搜索引擎爬虫抓取/bin/cgi/目录,以及/tmp/目录和/foo.html文件,设置方法如下:
User-agent:*
Disallow:/bin/cgi/
Disallow:/tmp/
Disallow:/foo.html
【例2】通过/robots.txt只允许某个搜索引擎抓取,而禁止其他的搜索引擎抓取。如:只允许名为slurp的搜索引擎爬虫抓取,而拒绝其他的搜索引擎爬虫抓取/cgi/目录下的内容,设置方法如下:
User-agent:*
Disallow:/cgi/
User-agent:slurp
Disallow:
【例3】禁止任何搜索引擎抓取我的网站,设置方法如下:
User-agent:*
Disallow:/
【例4】只禁止某个搜索引擎抓取我的网站。如:只禁止名为slurp的搜索引擎蜘蛛抓取,设置方法如下:
User-agent:slurp
Disallow:/
搜索引擎爬虫必须要遵守Robots协议并执行Web站点的要求。因此搜索引擎爬虫需要有一个分析Robots协议的模块,并严格按照Robots协议的规定抓取Web主机允许访问的目录和网页。
当然,Robots.txt只是一个协议,如果搜索引擎爬虫的设计者不遵循这个协议,网站管理员也无法阻止搜索引擎爬虫对于某些页面的访问,但一般的搜索引擎爬虫都会遵循这些协议,而且网站管理员还可以通过其他方式来拒绝网络蜘蛛对某些网页的抓取。
搜索引擎爬虫在下载网页的时候,会去识别网页的HTML代码,在其代码部分会有META标识。通过这些标识,可以告诉搜索引擎爬虫本网页是否需要被抓取,还可以告诉搜索引擎爬虫本网页中的链接是否需要被继续跟踪。例如:表示本网页不需要被抓取,但是网页内的链接需要被跟踪。
现在一般的网站都希望搜索引擎能更全面地抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面地被抓取到,网站管理员可以建立一个网站地图,即Site Map。许多搜索引擎爬虫会把sitemap.html文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么搜索引擎爬虫可以很方便地把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。