最簡單的robots.txt只有兩條規則:
1.User-agent:指定對哪些爬蟲生效
2.Disallow:指定要屏蔽的網址
整個文件分為x節,一節由y個User-agent行和z個Disallow行組成。一節就表示對User-agent行指定的y個爬蟲屏蔽z個網址。這里x>=0,y>0,z>0。x=0時即表示空文件,空文件等同于沒有robots.txt。
下面詳細介紹這兩條規則:
User-agent
爬蟲抓取時會聲明自己的身份,這就是User-agent,沒錯,就是http協議里的User-agent。robots.txt利用User-agent來區分各個引擎的爬蟲。
舉例說明:google網頁搜索爬蟲的User-agent為Googlebot,下面這行就指定google的爬蟲。
User-agent:Googlebot
如果想指定所有的爬蟲怎么辦?不可能窮舉啊,可以用下面這一行:
User-agent: *
可能有的同學要問了,我怎么知道爬蟲的User-agent是什么?這里提供了一個簡單的列表:爬蟲列表當然,你還可以查相關搜索引擎的資料得到官方的數據,比如說google爬蟲列表,百度爬蟲列表Disallow
Disallow 行列出的是要攔截的網頁,以正斜線 (/) 開頭,可以列出特定的網址或模式。
要屏蔽整個網站,使用正斜線即可:
Disallow: /
要屏蔽某一目錄以及其中的所有內容,在目錄名后添加正斜線:
Disallow: /無用目錄名/
要屏蔽某個具體的網頁,就指出這個網頁。
Disallow: /網頁。html
Disallow還可以使用前綴和通配符。
要屏蔽目錄a1-a100,可以使用上面的方式寫100行,或者Disallow:/a
但是需要注意,這樣會把任何以a開頭的目錄和文件也屏蔽,慎用。如果需要屏蔽a1-a100,但是不屏蔽a50,怎么辦?同學們可以思考一下,這個問題我們留到下一節。
要阻止特定類型的文件(如 .gif),請使用以下內容:
Disallow: /*.gif$
*匹配任意個字符,$匹配url結束,具體就不解釋了吧,不了解的同學去自學一下通配符。
提示一下,Disallow的內容區分大小寫。例如,Disallow:/junkfile.asp 會屏蔽 junkfile.asp,卻會允許Junk_file.asp。
最最后,通配符不是所有搜索引擎都支持,使用要小心。沒辦法,誰讓robots.txt沒有一個大家都承認的標準呢。
實例 ###
百度網頁搜索
User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
User-agent: MSNBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
…
現在讀懂這個應該毫無壓力了吧,順便說一句百度的robots.txt比較啰嗦,有興趣的同學可以簡化一下。
高階玩法
首先聲明:高級玩法不是所有引擎的爬蟲都支持,一般來說,作為搜索引擎技術領導者的谷歌支持的最好。
例子:google robots.txt
allow
還記得上面的問題嗎?如果需要屏蔽a1-a100,但是不屏蔽a50,怎么辦?
方案1:
Disallow:/a1/
Disallow:/a2/
…
Disallow:/a49/
Disallow:/a51/
…
Disallow:/a100/
方案2:
Disallow:/a
Allow:/a50/
ok,allow大家會用了吧。
順便說一句,如果想屏蔽a50下面的文件private.html,咋整?
Disallow:/a
Allow:/a50/
Disallow:/a50/private.html
聰明的你一定能發現其中的規律,對吧?誰管的越細就聽誰的。
sitemap
前 面說過爬蟲會通過網頁內部的鏈接發現新的網頁。但是如果沒有連接指向的網頁怎么辦?或者用戶輸入條件生成的動態網頁怎么辦?能否讓網站管理員通知搜索引擎 他們網站上有哪些可供抓取的網頁?這就是sitemap,最簡單的 Sitepmap 形式就是 XML 文件,在其中列出網站中的網址以及關于每個網址的其他數據(上次更新的時間、更改的頻率以及相對于網站上其他網址的重要程度等等),利用這些信息搜索引擎 可以更加智能地抓取網站內容。
sitemap是另一個話題,足夠開一篇新的文章聊的,這里就不展開了,有興趣的同學可以參考sitemap新的問題來了,爬蟲怎么知道這個網站有沒有提供sitemap文件,或者說網站管理員生成了sitemap,(可能是多個文件),爬蟲怎么知道放在哪里呢?