
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了“K哥爬虫普法”专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识,知晓如何合法合规利用爬虫技术,警钟长鸣,做一个守法、护法、有原则的技术人员。
被告人:北京百度网讯科技有限公司(以下简称百度公司),百度
上诉人:上海汉涛信息咨询有限公司(以下简称汉涛公司),大众点评
汉涛公司诉称,“百度地图”与“百度知道”未经授权,大量复制“大众点评网”的用户点评等信息,与“百度地图”具有合作关系的上海杰图软件技术公司运营的“城市吧”网站因使用了“百度地图”又扩大了侵权影响范围、造成公司重大损失。因此,“大众点评网”的运营方上海汉涛信息咨询有限公司将北京百度网讯有限公司及上海杰图软件技术公司以不正当竞争为由,诉至法院,要求被告停止侵权、刊登公告消除不良影响,并赔偿经济损失 9000 万元和为制止侵权行为支出的 45 万余元。
该案中,北京百度网讯科技有限公司(“百度公司”)使用技术手段在大众点评等 APP 上抓取了商户的基本信息及点评信息,用户使用其运营的百度地图 APP 查询位置时,无需跳转至大众点评界面,就可直接在百度地图界面获取商户的基本信息和点评信息。汉涛公司以百度公司等相关主体构成不正当竞争向法院起诉。
双方是否存在竞争关系?
法院认为,虽然汉涛公司与百度公司所运营的APP属于不同行业、不同领域且有着不同的经营模式,但是双方的行为在争夺相同的网络用户群体,两者在为用户提供商户信息和点评信息的服务模式上近乎一致,存在竞争关系。 从法院观点来看,在竞争关系的认定上,将不限于对同行业相关主体竞争关系的认定,还将争夺相同网络用户群体的相关主体认定为具有竞争关系。这对许多以“流量为王”的企业非常具有警示意义。
汉涛公司是否有可诉诸法律保护的合法权益?
法院认为,汉涛公司为了积累点评信息付出了巨额成本。点评信息是汉涛公司的核心竞争资源之一,为汉涛公司带来竞争优势。 在法院考量汉涛公司是否具备可诉诸法律保护的合法权益上,关注了汉涛公司获取涉案数据信息的成本,以及涉案数据信息为汉涛公司带来的效益。
百度公司是否存在不正当的行为?
法院认为,在百度公司靠自身用户无法获取足够点评信息的情况下,通过技术手段,从大众点评等网站获取点评信息,用于充实百度地图,百度公司的这种行为违反了公认的商业道德和诚实信用原则,具有不正当性。 在对百度公司行为不正当性进行认定上,法院认为百度公司这种类似于“搭便车”、“不劳而获”的行为违反了商业道德和诚实信用原则。
汉涛公司是否因百度公司的行为遭受实际损害?
法院认为,用户在使用百度地图查阅到商户信息和点评信息后已无需跳转至大众点评查看更多信息,百度地图已经对大众点评形成实质性替代,对汉涛公司造成了实质性损害。 对于互联网企业而言,用户流量的多少,在某种程度上决定了企业在市场上的竞争力和企业价值。与认定是否具有竞争关系类似,法院在认定汉涛公司是否遭受实际损害时,关注到百度公司“截取”了汉涛公司应有的网络用户浏览量,对大众点评形成实质性替代。
法院一审判决结果:
法院二审判决结果:
本案中汉涛公司认为百度的行为是零成本获取己方拥有“著作权的内容”,且因百度的行为造成了实际损失,构成不正当竞争。而百度方代理律师认为,百度是一家搜索功能公司,与大众点评网之间没有形成竞争关系,所做的只是搜索相关信息,筛选后进行呈现,在这个过程中采集到了大众点评网中的部分信息,不存在不正当行为,而且大众点评网的Robots协议是面向百度开放的,百度采集的信息是Robots协议允许的。
在二审中上诉人汉涛公司的辩称中有一条需要我们注意:百度公司通过搜索引擎抓取涉案信息并不违反Robots协议,但并不意味着百度公司可以任意使用该些信息,若不对使用他人网站信息的方式进行合理控制,将导致百度公司以极低的成本攫取汉涛公司的经营成果。
我们知道Robots协议是一种约定俗成的君子协议,并不具备法律效应。即使大众点评网中Robots协议是面向百度的,但百度也不可以用采集到的信息对大众点评网造成影响,百度的行为依旧属于不正当竞争行为。这种情况也存在于很多企业之中,很多企业都会采集一些信息聚合平台上的公开或者半公开的信息,然后将信息应用于自己的业务场景中,企业认为自己采集的是公开信息,并不违反法律。但是却没有考虑业务是否与信息聚合平台间存在竞争关系,没有考量对爬虫信息的使用范围和方式以及对信息聚合平台造成的影响,这也是很多个人爬虫开发者在爬虫开发时没有去考虑的点。
目前数据抓取行为所涉的竞争关系认定标准比较模糊,目前对于此类案件的判决主要有三要件:
第一,行为确属法律未特别明确;
第二,其他经营者的合法权益确因该竞争行为而受到了实际损害;
第三,该种竞争行为确因违反诚实信用原则和公认的商业道德而具有不正当性或可责性。
该案中百度的行为也确实符合这三要件,同样作为内容提供商,将大众点评网中的信息展示在自己的产品中,会导致大众点评的流量流失,是不正当的行为。
随着数据在现代社会中的重要性日益增加,数据权属问题也越来越重要,企业乃至国家对于数据的重视程度不断加深。《中共中央 国务院关于构建更加完善的要素市场化配置体制机制的意见》中明确将数据作为一种生产要素,与传统的生产要素如土地、劳动力、资本、技术等并列。因此,爬虫开发中,我们不仅需要关注数据的来源是否合法,也要思考数据的使用是否得当。
在railstutorial中,作者为什么选择使用这个(代码list10.25):http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-usersnamespace:dbdodesc"Filldatabasewithsampledata"task:populate=>:environmentdoRake::Task['db:reset'].invokeUser.create!(:name=>"ExampleUser",:email=>"example@railstutorial.org",:passwo
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD