Robots.txt 文件首先它是一个简单的文本txt文件,也被称作协议文件,它指定搜索引擎爬虫是否应该或者不应该访问特定的文件夹、子文件夹或者页面,以及关于你的网站的其他信息,该文件作为一个用于网站与爬虫和其他机器人进行交流的一个媒介。当然使用协议文件是绝对必要的: 你可以使用 HTML 或者文字编辑器创建一个 robots.txt 文件,然后把包括禁止搜索引擎爬虫爬取的文件位置的代码写进去放到网站根目录即可。
robots.txt 是如何工作的?原理是什么?
原理其实很简单,当一个网站的所有者想给网络爬虫一些指导或者限制的时候,他们会把他们的 robots.txt 文件放在他们网站的根目录中。遵循这个协议的蜘蛛机器人将在从网站获取任何其他文件之前获取和读取该文件,哪些文件可以抓,哪些文件不可以抓。就像一本工具书,你就是那个机器人,你得遵循工具书上的指导,才能实践相关的东西,那本工具书就是robots文件。如果网站没有 robots.txt,爬虫会认为网站管理员不想给出任何具体的指示,并且会继续爬行整个网站。Robots.txt一般由两部分组成:User-Agent和指令:
User-Agent
User-agent 就是蜘蛛爬行器的名称,也被称作用户代理。注意User-agent 行总是位于每组指令中的指令行之前。一个基本的 robots.txt 文件类似是这样的:
User-agent: Googlebot
Disallow: /
而Disallow: /指令呢,就是指导用户代理,例如Googlebot,baiduSpyder等,远离整个服务器——它不会抓取网站上的任何页面。 如果要向多个机器人发出指令,可以为每个机器人创建一组用户代理并禁止使用指令。
User-agent: Googlebot
Disallow: /
User-agent: Baiduspider
Disallow: /
Disallow指令
Robots.txt 的第二重要的指令就是”Disallow”行。这个指令告诉 spider 不允许爬行哪些页面以及文件夹。每组指令可以有多个禁止行,但只有一个用户代理。还有就是你如果想指定特定的页面、目录、子目录和文件类型不被爬取,你可以列出相应的文件夹名称或者网页名称。但是注意只能使用该网页的相对路径,例如:
User-agent: *
Disallow: /folder1/
Disallow: /folder2/
Disallow: /directory/
你也可以使用 robots.txt 来阻止机器人通过在不允许的行中使用通配符和文件类型来阻止机器人爬行,一般常用的通配符是*和$,*表示所有的意思,$表示以..为结尾的意思,
User-agent: *
Disallow: /*.PPT
Disallow: /images/*.jpg
Disallow: /duplicatecontent/copy*.html
以Disallow: /duplicatecontent/copy*.html这条指令为例,下列的路径:
/duplicatecontent/
/duplicatecontent/
/duplicatecontent/
/duplicatecontent/
只有第一二三条是无法被爬取的,第四条不满足条件,所以还是可以被爬取,如果copy*.html改为copy*.html$,那么四条都无法被爬取。
Allow
当然Allow这个指令也很重要,它可以说是作为dissallow的补充,因为有时候你可能想要排除目录中的每个文件,除了某一个文件或者路径,这个时候就能用到它了。你可以为除了你想要的文件以外的每个文件写一个不允许的行,你可以使用 Allow 指令。它的工作原理和dissallow的差不多,通配符和匹配模式规则在 Allow 指令中的作用与在 Disallow 中的作用也是相同的。
User-agent: *
Allow: /folder/subfolder/
Disallow: /folder/subfolder/
其他指令
还有一些国外搜索引擎支持的另一个指令是crawl-delay。它指定了一个表示数秒的数值——爬行延迟应该看起来像crawl-delay: 15。雅虎、必应和 Yandex 都有不同的使用方式。Google和 Bing 使用这个值作为蜘蛛爬行操作之间的一个等待时间,而 Yandex 将用它作为访问站点的等待时间。在国内呢,百度,360等搜索引擎目前使用不多。如果你有一个很大的网站,你可能不想使用这个指令,因为它可以严重限制页面的爬行次数。但是,如果你从这些搜索引擎中得到的流量很少甚至没有,你可以使用爬行延迟来节省带宽。当然高级点的,你还可以将 crawl-delay设置为特定的用户代理程序。例如,你可能会发现你的网站经常被某搜索引擎或者其他爬虫优化工具抓取过多时,如果你觉得他们在对你网站有伤害时,你也可以屏蔽他们,以便节省自己的网络宽带。
最后,你也可以通过在文件中添加 Sitemap来告诉搜索引擎在哪里找到 Sitemap。这个指令独立于用户代理,所以蜘蛛机器人能够解释它,但最好把它放在最后。为你拥有的每一个站点地图创建一个新的站点地图行,包括你的图片和视频站点地图或者你的站点地图索引文件,都是很有必要的。如果你宁愿你的站点地图位置不想让所有人都可以看到,你就可以选择忽略这一点了,哈哈,那就直接向搜索引擎提交站点地图吧。
告诉蜘蛛可以抓取哪些内容,不能抓哪些内容。百度一下就知道了