在Django项目中添加robots.txt,是为了让搜索引擎只爬取我们想让它爬取的内容。
一般搜索引擎在爬取网站内容时都会先爬取这个文件,然后根据这个文件的设置进行内容的爬取。
首先,先来看一下robots.txt文件的写法。
在robots.txt文件中,每一组配置主要由3个命令组成:
User-agent(必填):设置搜索引擎robot的名称,“*”表示对所有搜索引擎生效。 Allow:希望被搜索引擎爬取的URL。 Disallow:禁止搜索引擎爬取的URL。另外,在robots.txt文件中支持使用通配符”*”and”$”。
综上所述,我们来看一些例子。
1、允许所有的搜索引擎爬取网站全部内容 User-agent: * Allow: / 或者 User-agent: * Disallow: 2、 禁止所有搜索引擎爬取网站的任何内容 User-agent: * Disallow: / 3、 禁止某个搜索引擎爬取网站内容
禁止百度搜索引擎: User-agent: Baiduspider Disallow: / 禁止360搜索引擎: User-agent: 360Spider Disallow: / 4、 只允许百度搜索引擎爬取网站内容 User-agent: Baiduspider Disallow: 5、 禁止搜索引擎爬取指定目录 User-agent: * Disallow: /admin/ Disallow: /tmp/ 6、允许搜索引擎爬取指定目录中的部分内容 User-agent: * Allow: /tmp/image Disallow: /tmp/ 7、使用”*”限制爬取
禁止访问/media/目录下所有的“gif”文件。 User-agent: * Disallow: /media/*.gif 8、使用”$”限制爬取
仅允许爬取以”.html”为后缀的URL。 User-agent: * Allow: .html$ Disallow: / 9、 禁止爬取网站中所有的动态页面 User-agent: * Disallow: /*?* 10、仅允许百度搜索引擎爬取网站上的网页和“.png”图片 User-agent:Baiduspide Allow: .png$ Disallow: .jpg$ Disallow: .jpeg$ Disallow: .gif$ Disallow: .bmp$ 以上就是关于robots.txt文件的写法。
那么,这个文件放在哪里?如何使用呢?
这个文件应该让搜索引擎在网站的根目录就能够找到。
对于搜索引擎来说,它的URL应该是http(s)://www.domain.com/robots.txt
但是,实际上这个文件我们不会放在项目的根目录中去,因为放进去也访问不了。
根据Django的官方文档,可以采用下面这种方式。
1、将robots.txt文件放入项目的static文件夹中。
2、在nginx的配置文件中添加如下配置。
location /robots.txt { <span class="hljs-built_in">alias</span> /path/to/static/robots.txt; }
当然,并不是所有项目都是用nginx服务器。
我们还可以将robots.txt文件放到 templates 目录中,然后修改urls.py文件。
from django.views.generic import TemplateView path('robots.txt', TemplateView.as_view(template_name='robots.txt', content_type='text/plain')),
除了使用robots.txt文件之外,有些搜索引擎还支持nofollow和noarchive标记。
nofollow:禁止搜索引擎跟踪当前页面上的链接
如果不想让搜索引擎追踪某个网页上的链接,且不传递链接的权重,可以在网页的<HEAD> 部分加上:<meta name=”robots” content=”nofollow”>
如果不想让搜索引擎追踪某一条特定链接,可以将标记直接写在某个链接上:<a href=”index.html” rel=”nofollow”>index</a>
如果仅拒绝某一个搜索引擎(例如百度)跟踪网页上的链接,可以在网页的<HEAD> 部分加上:<meta name=”Baiduspider” content=”nofollow”>
noarchive:禁止搜索引擎在搜索结果中显示网页快照
如果拒绝所有搜索引擎显示网页的快照,可以在网页的<HEAD> 部分加上:<meta name=”robots” content=”noarchive”>
如果仅拒绝某一个搜索引擎(例如百度)显示快照,可以在网页的<HEAD> 部分加上:<meta name=”Baiduspider” content=”noarchive”>
查看更多关于如何在Django项目中添加robots.txt的详细内容...