By 一頁(yè)編程
什么是Robots協(xié)議
Robots是機(jī)器人的意思,那Robots協(xié)議是什么呢?
Robots協(xié)議的全稱是“網(wǎng)絡(luò)爬蟲(chóng)排除標(biāo)準(zhǔn)”(Robots Exclusion Protocol),讀起來(lái)很繞口,所以我們簡(jiǎn)稱Robots協(xié)議。Robots協(xié)議的一個(gè)很重要作用就是網(wǎng)站告知爬蟲(chóng)哪些頁(yè)面可以抓取,哪些不行。
我們之前講過(guò)說(shuō)一個(gè)網(wǎng)站想限制爬蟲(chóng),有兩個(gè)辦法,一個(gè)辦法是審查來(lái)源,一個(gè)辦法是通過(guò)Robots協(xié)議來(lái)做到告知。Robots協(xié)議就是這樣的一個(gè)功能,它的具體使用是在網(wǎng)站的根目錄下放置一個(gè)文件——robots.txt文件,在這個(gè)文件中寫明了在一個(gè)網(wǎng)站里哪些目錄是允許爬蟲(chóng)去爬取的,哪些目錄是不允許的。
通過(guò)這樣的形式,你如果寫了一個(gè)爬蟲(chóng),你就要去尊重網(wǎng)站維護(hù)人員對(duì)網(wǎng)站資源的一個(gè)管理。
京東的Robots協(xié)議
我們看一下京東的Robots協(xié)議,瀏覽器打開(kāi)網(wǎng)址:https://www.jd.com/robots.txt
,就看到Robots協(xié)議的文本。
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
-
User-agent: *
:指的是對(duì)于任何的網(wǎng)絡(luò)爬蟲(chóng)來(lái)源(定義為user-agent),也就是說(shuō)無(wú)論你是什么樣的網(wǎng)絡(luò)爬蟲(chóng)都應(yīng)該遵守如下的協(xié)議。 -
Disallow: /?*
:不允許所有爬蟲(chóng)訪問(wèn)以問(wèn)號(hào)開(kāi)頭的路徑。 -
Disallow: /pop/*.html
:不允許所有爬蟲(chóng)訪問(wèn)pop目錄下的所有HTML頁(yè)面。 -
Disallow: /pinpai/*.html?*
:符合這個(gè)通配符的內(nèi)容也是不允許任何網(wǎng)絡(luò)爬蟲(chóng)訪問(wèn)的
此外,京東的robots協(xié)議又提供了User-agent: EtaoSpider
這樣的一個(gè)內(nèi)容,其實(shí)不只是EtaoSpider,后面還有四個(gè)網(wǎng)絡(luò)爬蟲(chóng),后面都跟了一句Disallow: /
指的是這四個(gè)網(wǎng)絡(luò)爬蟲(chóng),是不允許爬去京東的任何資源,
Robots基本語(yǔ)法
Robots協(xié)議他通過(guò)了一個(gè)基本語(yǔ)法來(lái)告知所有的爬蟲(chóng),它內(nèi)部資源能夠被訪問(wèn)的權(quán)限,這個(gè)語(yǔ)法就是User-agent
和Disallow
。
-
User-agent
表明的是哪些爬蟲(chóng),如果我們想代表所有爬蟲(chóng)就用User-agent: *
。 -
Disallow
代表的是不允許這個(gè)爬蟲(chóng)訪問(wèn)的資源的目錄。
有了這樣的一個(gè)基本協(xié)議,就可以對(duì)整個(gè)網(wǎng)站的內(nèi)容做一個(gè)相關(guān)的規(guī)范,使得所有的爬蟲(chóng)知道他可以訪問(wèn)哪里,不可以訪問(wèn)哪里。