我們知道
搜索引擎都有自己的
搜索機器人
(ROBOTS)
並通過這些ROBOTS在網絡上沿著網頁上的鏈接(一般是http和src鏈接)不斷抓取資料建立自己的數據庫
對於網站管理者和內容提供者來說
有時候會有一些站點內容
不希望被ROBOTS抓取而公開
為了解決這個問題
ROBOTS開發界提供了兩個辦法
一個是robots
txt
另一個是The Robots META標簽
一 robotstxt 什麼是robots
txt?
robots
txt是一個純文本文件
通過在這個文件中聲明該網站中不想被robots訪問的部分
這樣
該網站的部分或全部內容就可以不被搜索引擎收錄了
或者指定搜索引擎只收錄指定的內容
當一個搜索機器人訪問一個站點時
它會首先檢查該站點根目錄下是否存在robots
txt
如果找到
搜索機器人就會按照該文件中的內容來確定訪問的范圍
如果該文件不存在
那麼搜索機器人就沿著鏈接抓取
robots
txt必須放置在一個站點的根目錄下
而且文件名必須全部小寫
網站 URL
相應的 robots
txt的 URL
robots
txt的語法
robots
txt
文件包含一條或更多的記錄
這些記錄通過空行分開(以CR
CR/NL
or NL作為結束符)
每一條記錄的格式如下所示
<field>:<optionalspace><value><optionalspace>
在該文件中可以使用#進行注解
具體使用方法和UNIX中的慣例一樣
該文件中的記錄通常以一行或多行User
agent開始
後面加上若干Disallow行
詳細情況如下
User
agent:
該項的值用於描述搜索引擎robot的名字
在
robots
txt
文件中
如果有多條User
agent記錄說明有多個robot會受到該協議的限制
對該文件來說
至少要有一條User
agent記錄
如果該項的值設為*
則該協議對任何機器人均有效
在
robots
txt
文件中
User
agent
*
這樣的記錄只能有一條
Disallow :
該項的值用於描述不希望被訪問到的一個URL
這個URL可以是一條完整的路徑
也可以是部分的
任何以Disallow 開頭的URL均不會被robot訪問到
例如
Disallow: /help
對/l 和/help/l都不允許搜索引擎訪問
而
Disallow: /help/
則允許robot訪問/l
而不能訪問/help/l
任何一條Disallow記錄為空
說明該網站的所有部分都允許被訪問
在
/robots
txt
文件中
至少要有一條Disallow記錄
如果
/robots
txt
是一個空文件
則對於所有的搜索引擎robot
該網站都是開放的
下面是一些robots
txt基本的用法
l 禁止所有搜索引擎訪問網站的任何部分
User
agent: *
Disallow: /
l 允許所有的robot訪問
User
agent: *
Disallow:
或者也可以建一個空文件
/robots
txt
file
l 禁止所有搜索引擎訪問網站的幾個部分(下例中的cgi
bin
tmp
private目錄)
User
agent: *
Disallow: /cgi
bin/
Disallow: /tmp/
Disallow: /private/
l 禁止某個搜索引擎的訪問(下例中的BadBot)
User
agent: BadBot
Disallow: /
l 只允許某個搜索引擎的訪問(下例中的WebCrawler)
User
agent: WebCrawler
Disallow:
User
agent: *
Disallow: /
常見搜索引擎機器人Robots名字
名稱 搜索引擎
Baiduspider
Scooter
ia_archiver
Googlebot
FAST
WebCrawler
Slurp
MSNBOT
robots
txt舉例
下面是一些著名站點的robots
txt
常見robots
txt錯誤
l 顛倒了順序
錯誤寫成
User
agent: *
Disallow: GoogleBot
正確的應該是
User
agent: GoogleBot
Disallow: *
l 把多個禁止命令放在一行中
例如
錯誤地寫成
Disallow: /css/ /cgi
bin/ /images/
正確的應該是
Disallow: /css/
Disallow: /cgi
bin/
Disallow: /images/
l 行前有大量空格
例如寫成
Disallow: /cgi
bin/
盡管在標准沒有談到這個
但是這種方式很容易出問題
l
重定向到另外一個頁面
當Robot訪問很多沒有設置robots
txt文件的站點時
會被自動
重定向到另外一個Html頁面
這時Robot常常會以處理robots
txt文件的方式處理這個Html頁面文件
雖然一般這樣沒有什麼問題
但是最好能放一個空白的robots
txt文件在站點根目錄下
l 采用大寫
例如
USER
AGENT: EXCITE
DISALLOW:
雖然標准是沒有大小寫的
但是目錄和文件名應該小寫
user
agent:GoogleBot
disallow:
l 語法中只有Disallow
沒有Allow!
錯誤的寫法是
User
agent: Baiduspider
Disallow: /john/
allow: /jane/
l 忘記了斜槓/
錯誤的寫做
User
agent: Baiduspider
Disallow: css
正確的應該是
User
agent: Baiduspider
Disallow: /css/
下面一個小工具專門檢查robots
txt文件的有效性
bin/robotcheck
cgi
二 Robots META標簽 什麼是Robots META標簽
Robots
txt文件主要是限制整個站點或者目錄的搜索引擎訪問情況
而Robots META標簽則主要是針對一個個具體的頁面
和其他的META標簽(如使用的語言
頁面的描述
關鍵詞等)一樣
Robots META標簽也是放在頁面的<head></head>中
專門用來告訴搜索引擎ROBOTS如何抓取該頁的內容
具體的形式類似(見黑體部分)
<html>
<head>
<title>時代營銷
網絡營銷專業門戶</title>
<meta name=
Robots
content=
index
follow
>
<meta http
equiv=
Content
Type
CONTENT=
text/html; charset=gb
>
<meta name=
keywords
content=
營銷…
>
<meta name=
description
content=
時代營銷網是…
>
<link rel=
stylesheet
type=
text/css
>
</head>
<body>
…
</body>
</html>
Robots META標簽的寫法
Robots META標簽中沒有大小寫之分
name=
Robots
表示所有的搜索引擎
可以針對某個具體搜索引擎寫為name=
BaiduSpider
content部分有四個指令選項
index
noindex
follow
nofollow
指令間以
分隔
INDEX 指令告訴搜索機器人抓取該頁面
FOLLOW 指令表示搜索機器人可以沿著該頁面上的鏈接繼續抓取下去
Robots Meta標簽的缺省值是INDEX和FOLLOW
只有inktomi除外
對於它
缺省值是INDEX
NOFOLLOW
這樣
一共有四種組合
<META NAME=
ROBOTS
CONTENT=
INDEX
FOLLOW
>
<META NAME=
ROBOTS
CONTENT=
NOINDEX
FOLLOW
>
<META NAME=
ROBOTS
CONTENT=
INDEX
NOFOLLOW
>
<META NAME=
ROBOTS
CONTENT=
NOINDEX
NOFOLLOW
>
其中
<META NAME=
ROBOTS
CONTENT=
INDEX
FOLLOW
>可以寫成
<META NAME=
ROBOTS
CONTENT=
ALL
>
<META NAME=
ROBOTS
CONTENT=
NOINDEX
NOFOLLOW
>可以寫成
<META NAME=
ROBOTS
CONTENT=
NONE
>
需要注意的是
上述的robots
txt和Robots META標簽限制搜索引擎機器人(ROBOTS)抓取站點內容的辦法只是一種規則
需要搜索引擎機器人的配合才行
並不是每個ROBOTS都遵守的
目前看來
絕大多數的搜索引擎機器人都遵守robots
txt的規則
而對於Robots META標簽
目前支持的並不多
但是正在逐漸增加
如著名搜索引擎GOOGLE就完全支持
而且GOOGLE還增加了一個指令
archive
可以限制GOOGLE是否保留網頁快照
例如
<META NAME=
googlebot
CONTENT=
index
follow
noarchive
>
表示抓取該站點中頁面並沿著頁面中鏈接抓取
但是不在GOOLGE上保留該頁面的網頁快照
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25664.html