网络爬虫简介(1)

栏目: 编程工具 · 发布时间: 5年前

网络爬虫简介(1) 异步社区 昨天 10:27

欢迎访问 网易云社区 ,了解更多网易技术产品运营经验。  

欢迎来到网络爬虫的广阔天地!网络爬虫被用于许多领域,收集不太容易以其他格式获取的数据。你可能是正在撰写新报道的记者,也可能是正在抽取新数据集的数据科学家。即使你只是临时的开发人员,网络爬虫也是非常有用的工具,比如当你需要检查大学网站上最新的家庭作业并且希望通过邮件发送给你时。无论你的动机是什么,我们都希望你已经准备好开始学习了!

在本章中,我们将介绍如下主题:

网络爬虫领域简介;

解释合法性质疑;

介绍 Python 3安装;

对目标网站进行背景调研;

逐步完善一个高级网络爬虫;

使用非标准库协助抓取网站。

1.1网络爬虫何时有用

假设我有一个鞋店,并且想要及时了解竞争对手的价格。我可以每天访问他们的网站,与我店铺中鞋子的价格进行对比。但是,如果我店铺中的鞋类品种繁多,或是希望能够更加频繁地查看价格变化的话,就需要花费大量的时间,甚至难以实现。再举一个例子,我看中了一双鞋,想等到它促销时再购买。我可能需要每天访问这家鞋店的网站来查看这双鞋是否降价,也许需要等待几个月的时间,我才能如愿盼到这双鞋促销。上述这两个重复性的手工流程,都可以利用本书介绍的网络爬虫技术实现自动化处理。在理想状态下,网络爬虫并不是必需品,每个网站都应该提供API,以结构化的格式共享它们的数据。然而在现实情况中,虽然一些网站已经提供了这种API,但是它们通常会限制可以抓取的数据,以及访问这些数据的频率。另外,网站开发人员可能会变更、移除或限制其后端API。总之,我们不能仅仅依赖于API去访问我们所需的在线数据,而是应该学习一些网络爬虫技术的相关知识。

1.2 网络爬虫是否合法 

尽管在过去20年间已经做出了诸多相关裁决,不过网络爬虫及其使用时法律所允许的内容仍然处于建设当中。如果被抓取的数据用于个人用途,且在合理使用版权法的情况下,通常没有问题。但是,如果这些数据会被重新发布,并且抓取行为的攻击性过强导致网站宕机,或者其内容受版权保护,抓取行为违反了其服务条款的话,那么则有一些法律判例可以提及。 

在Feist Publications, Inc.起诉Rural Telephone Service Co.的案件中,美国联邦最高法院裁定抓取并转载真实数据(比如,电话清单)是允许的。在澳大利亚,Telstra Corporation Limited起诉Phone Directories Company Pty Ltd这一类似案件中,则裁定只有拥有明确作者的数据,才可以受到版权的保护。而在另一起发生于美国的美联社起诉融文集团的内容抓取案件中,则裁定对美联社新闻重新聚合为新产品的行为是侵犯版权的。此外,在欧盟的ofir.dk起诉home.dk一案中,最终裁定定期抓取和深度链接是允许的。

还有一些案件中,原告控告一些公司抓取强度过大,尝试通过法律手段停止其抓取行为。在最近的QVC诉讼Resultly的案件中,最终裁定除非抓取行为造成了私人财产损失,否则不能被认定为故意侵害,即使爬虫活动导致了部分站点的可用性问题。这些案件告诉我们,当抓取的数据是现实生活中真实的公共数据(比如,营业地址、电话清单)时,在遵守合理的使用规则的情况下是允许转载的。但是,如果是原创数据(比如,意见和评论或用户隐私数据),通常就会受到版权限制,而不能转载。无论如何,当你抓取某个网站的数据时,请记住自己是该网站的访客,应当约束自己的抓取行为,否则他们可能会封禁你的IP,甚至采取更进一步的法律行动。这就要求下载请求的速度需要限定在一个合理值之内,并且还需要设定一个专属的用户代理来标识自己的爬虫。你还应该设法查看网站的服务条款,确保你所获取的数据不是私有或受版权保护的内容。如果你还有疑虑或问题,可以向媒体律师咨询你所在地区的相关判例。你可以自行搜索下述法律案件的更多信息Feist Publications Inc.起诉Rural Telephone Service Co.的案件。

Telstra Corporation Limited起诉Phone Directories Company Pvt Ltd的案件。

美联社起诉融文集团的案件。

ofir.dk起诉home.dk的案件。

QVC起诉Resultly的案件。

1.3 Python 3

在本书中,我们将完全使用Python 3进行开发。Python软件基金会已经宣布Python 2将会被逐步淘汰,并且只支持到

2020年;出于该原因,我们和许多其他Python爱好者一样,已经将开发转移到对Python 3的支持当中,在本书中我们将使用3.6版本。本书代码将兼容Python 3.4+的版本。

如果你熟悉Python Virtual Environments或Anaconda的使用,那么你可能已经知道如何在一个新环境中创建Python 3了。如果你希望以全局形式安装Python 3,那么我们推荐你搜索自己使用的操作系统的特定文档。就我而言,我会直接使用Virtual Environment Wrapper(https://virtualenvwrapper.readthedocs.io/en/latest),这样就可以很容易地对不同项目和Python版本使用多个不同的环境了。使用Conda环境或虚拟环境是最为推荐的,这样你就可以轻松变更基于项目需求的依赖,而不会影响到你正在做的其他工作了。对于初学者来说,我推荐使用Conda,因为其需要的安装工作更少一些。Conda的介绍文档(https://conda.io/docs/intro.html)是一个不错的开始!从此刻开始,所有代码和命令都假设你已正确安装Python 3并且正在使用Python 3.4+的环境。如果你看到了导入或语法错误,请检查你是否处于正

确的环境当中,查看跟踪信息中是否存在Python 2.7的文件路径。

原文网址 :https://www.epubit.com/book/detail/33225

内容来源 :异步社区;版权属【人民邮电出版社 异步社区】所有,转载已获得授权;未经授权,不得以任何方式复制和传播本书内容,如需转载请联系异步社区。

分享至:
网络爬虫简介(1)
网络爬虫简介(1)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

《裂变:秒懂人工智能的基础课》

《裂变:秒懂人工智能的基础课》

王天一 / 电子工业出版社·博文视点 / 2018-6-13 / 59.00元

人工智能是指通过普通计算机程序实现的人类智能技术,这一学科不仅具有非凡的科学意义,对人类自身生存方式的影响也在不断加深。本书作为人工智能领域的入门读物,内容围绕人工智能的核心框架展开,具体包括数学基础知识、机器学习算法、人工神经网络原理、深度学习方法与实例、深度学习之外的人工智能和实践应用场景等模块。本书力图为人工智能初学者提供关于这一领域的全面认识,也为进一步的深入研究建立坚实的基础。一起来看看 《《裂变:秒懂人工智能的基础课》》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码