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