1. 程式人生 > >python 網路爬蟲的Robots協議

python 網路爬蟲的Robots協議

網路爬蟲的尺寸大致分為3種:

而第一種大致佔到了90%。由於網路爬蟲的存在,伺服器會因為網路爬蟲造成很大的資源開銷,比如一個普通人一定時間內訪問上十次,而爬蟲可能會訪問十萬次或者百萬次。如果一個伺服器效能較差,可能會承受不來這個規模的訪問。因此網路上對爬蟲有一定的制約,對於一些不友好的爬蟲,甚至可能會涉及到觸犯到法律。

 

現在一般的網站都會對爬蟲做出限制,大致分為兩種:

現在說一下第二種,Robots(Robots Exclusion Standard )協議,也叫機器人協議。

作用:告知爬蟲網頁上哪些內容可以爬取,哪些不行。

形式:在網站根目錄下放置robots.txt檔案。

比如我們用程式碼去獲取京東的robots協議:

import  requests

def getHTTPXML( url ):
    try:
        r = requests.get(url, timeout = 30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "產生異常"

if __name__=="__main__":
    url = "http://www.jd.com/robots.txt"
    print(getHTTPXML(url))

爬取下來的robots協議為:

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 

意思就是說對於所有的網路爬蟲,都應該遵守這個協議。

第二行什麼意思呢?disallow表示不允許,?後面是*,表示?後面所有的東西,也就是說,它不允許任何爬蟲訪問任何以?開頭的路徑。

第三行表示任何爬蟲都不允許訪問pop/開頭的路徑。

第四行同理,符合這類的路徑也不允許訪問。

後面的又寫了四個爬蟲,EtaoSpider等等

他們被禁止的是根目錄。這四種爬蟲不允許爬取京東的任何資源。

也就是說這四種爬蟲被京東定義為惡意爬蟲,非法的獲取過京東的資源,所以京東不允許這四類爬蟲獲取京東的任何資源了。

對於不遵守robots協議的爬蟲,可能會存在法律風險。

 

所以大家也看到了,robots協議就是通過User-agent 和 disallow這兩個基本語法來告知所有爬蟲它內部能訪問的許可權。

有了這個的話,就相當於告知所有爬蟲應該去遵守這個網站的規範,相當於制定了一個準則。

不同的網站會有不同的robots協議,我們也可以看看其他網站的robots協議。

來看一下百度的robots協議:

User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: MSNBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Baiduspider-image
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: YoudaoBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou web spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou inst spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou spider2
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou blog
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou News Spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sogou Orion spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: ChinasoSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: Sosospider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/


User-agent: yisouspider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: EasouSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/

User-agent: *
Disallow: /

qq的robots協議:

User-agent: *
Disallow:  
Sitemap: http://www.qq.com/sitemap_index.xml

新浪新聞的robots協議:

User-agent: *
Disallow: /wap/
Disallow: /iframe/
Disallow: /temp/

不是所有網站都有robots協議,比如國家教育部的網站就沒有robots協議,它就預設為所有網路爬蟲都可以無限制的去爬取這個網站。