python 网络爬虫的Robots协议

网络爬虫的尺寸大致分为3种:

python 网络爬虫的Robots协议_第1张图片

而第一种大致占到了90%。由于网络爬虫的存在,服务器会因为网络爬虫造成很大的资源开销,比如一个普通人一定时间内访问上十次,而爬虫可能会访问十万次或者百万次。如果一个服务器性能较差,可能会承受不来这个规模的访问。因此网络上对爬虫有一定的制约,对于一些不友好的爬虫,甚至可能会涉及到触犯到法律。

 

现在一般的网站都会对爬虫做出限制,大致分为两种:

python 网络爬虫的Robots协议_第2张图片

现在说一下第二种,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协议,它就默认为所有网络爬虫都可以无限制的去爬取这个网站。

你可能感兴趣的:(python)