爬虫要具备的准则:
不能犯法:
一定要遵循Robots协议:
下面以淘宝网的robots.txt为例进行介绍。
这里仅截取部分代码,查看完整代码可以访问
User-agent: Baiduspider #百度爬虫引擎 Allow: /article #允许访问/article.htm、/article/12345.com Allow: /oshtml Allow: /wenzhang Disallow: /product/ #禁止访问/product/12345.com Disallow: / #禁止访问除Allow规定页面外的其他所有页面 User-Agent: Googlebot #谷歌爬虫引擎 Allow: /article Allow: /oshtml Allow: /product #允许访问/product.htm、/product/12345.com Allow: /spu Allow: /dianpu Allow: /wenzhang Allow: /oversea Disallow: /
在上面的robots文件中,淘宝网对用户代理为百度爬虫引擎进行了规定。
以Allow项的值开头的URL是允许robot访问的。例如,Allow:/article允许百度爬虫引擎访问/article.htm、/article/12345.com等。
以Disallow项为开头的链接是不允许百度爬虫引擎访问的。例如,Disalow:/product/不允许百度爬虫引擎访问/product/12345.com等。
因此,当你在百度搜索“淘宝”的时候,搜索结果下方的小字会出现:“由于该网站的robots.txt文件存在限制指令(限制搜索引擎抓取),系统无法提供该页面的内容描述”,如图1-1所示。百度作为一个搜索引擎,良好地遵守了淘宝网的robot.txt协议,所以你是不能从百度上搜索到淘宝内部的产品信息的。淘宝的Robots协议对谷歌爬虫的待遇则不一样,和百度爬虫不同的是,它允许谷歌爬虫爬取产品的页面Allow:/product。
除了上述Robots协议之外,我们使用网络爬虫的时候还要对自己进行约束:过于快速或者频密的网络爬虫都会对服务器产生巨大的压力,网站可能封锁你的IP,甚至采取进一步的法律行动。因此,你需要约束自己的网络爬虫行为,将请求的速度限定在一个合理的范围之内。
提示
本书中的爬虫仅用于学习、研究用途,请不要用于非法用途。任何由此引发的法律纠纷,请自行负责。
实际上,由于网络爬虫获取的数据带来了巨大价值,因此网络爬虫逐渐演变成一场网站方与爬虫方的战争,你的矛长一寸,我的盾便厚一寸。在携程技术微分享上,携程酒店研发部研发经理崔广宇分享过一个“三月爬虫”的故事,也就是每年的三月份会迎来一个爬虫高峰期。因为有大量的大学生五月份交论文,在写论文的时候会选择爬取数据,也就是3月份爬取数据,4月份分析数据,5月份交论文。
因此,各大互联网巨头也已经开始调集资源来限制爬虫,保护用户的流量和减少有价值数据的流失。
2007年,爱帮网利用垂直搜索技术获取了大众点评网上的商户简介和消费者点评,并且直接大量使用,大众点评网多次要求爱帮网停止使用这些内容,而爱帮网以自己是使用垂直搜索获得的数据为由,拒绝停止抓取大众点评网上的内容,并且质疑大众点评网对这些内容所享有的著作权。为此,双方开打了两场官司。2011年1月,北京海淀法院做出判决:爱帮网侵犯大众点评网著作权成立,应当停止侵权并赔偿大众点评网经济损失和诉讼必要支出。
2013年10月,百度诉360违反Robots协议。百度方面认为,360违反了Robots协议,擅自抓取、复制百度网站内容并生成快照向用户提供。2014年8月7日,北京市第一中级人民法院做出一审判决,法院认为被告奇虎360的行为违反了《反不正当竞争法》相关规定,应赔偿原告百度公司70万元。
虽然说大众点评上的点评数据、百度知道的问答由用户创建而非企业,但是搭建平台需要投入运营、技术和人力成本,所以平台拥有对数据的所有权、使用权和分发权。
以上两起败诉告诉我们,在爬取网站的时候需要限制自己的爬虫,遵守Robots协议和约束网络爬虫程序的速度;在使用数据的时候必须遵守网站的知识产权。如果违反了这些规定,很可能会吃官司,并且败诉的概率相当高