基本信息

内容简介
计算机书籍
本书将介绍如何使用Python编写网络爬虫程序获取互联网上的大数据。本书包括三部分内容:基础部分、进阶部分和项目实践。基础部分(第1~6章)主要介绍爬虫的三个步骤(获取网页、解析网页和存储数据),并通过诸多示例的讲解,让读者从基础内容开始系统性地学习爬虫技术,并在实践中提升Python爬虫水平。进阶部分(第7~12章)包括多线程的并发和并行爬虫、分布式爬虫、更换IP等,帮助读者进一步提升爬虫水平。项目实践部分(第13~16章)使用本书介绍的爬虫技术对几个真实的网站进行抓取,让读者能在读完本书后根据自己的需求写出爬虫程序。无论是否有编程基础,只要是对爬虫技术感兴趣的读者,本书就能带领读者从入门到进阶,再到实战,一步步了解爬虫,终写出自己的爬虫程序。
目录
推荐序一
推荐序二
前言一
前言二
第 1章网络爬虫入门. 1
1.1 为什么要学网络爬虫2
1.1.1 网络爬虫能带来什么好处2
1.1.2 能从网络上爬取什么数据3
1.1.3 应不应该学爬虫3
1.2 网络爬虫是否合法 3
1.2.1 Robots协议4
前言
爬虫程序是 DT(Data Technology,数据技术)收集信息的基础,程序员爬取目标网站的资料后,就可以分析和建立应用了。我们关心的是科技如何给大家带来实效,进而实现目标和理想,不能应用的技术称为魔术,只能用于表演。我们十分关注读者能否把握爬虫概念,所以相关的技术结合不同的实例讲解,希望能指导读者完成整个数据采集的流程。
Python是一个简单、有效的语言,爬虫所需的获取、存储、整理等流程都可以使用 Python系统地实现。此外,绝大部分计算机也可以直接使用 Python语言或简单地安装 Python系统,相信读者一定能轻松地把 Python作为爬虫的主要技术。
动其心者,当具有大本大源
DT的核心是从信息的源头去理解和分析,以做出能打动对方的行动决策方案。由谷歌搜索到现在的大数据时代,爬虫技术的重要性和广泛性一直很突出。程序员理解了信息的获取、存储和整理各方面的基本关系,才有可能系统地收集和应用不同源头和千变万化的网站信息。
数据共享
程序员要建立共利的互联网环境,不能把爬虫作为窃取数据的工具,爬虫必须在合情、合法、合理的情况下获取和应用。尊重数据供应者的知识产权和正常运作才能产生长久共利的环境。保障对方平台的正常运作是每个程序员都应当做到的,因此我们把爬虫的制约放在本书的第 1章讨论。
自强不息
互联网科技不断更新和进步,网站信息也随之不断改变。爬虫的乐趣在于如何一直高效率、持续不断地从日新月异的网站中获取信息。另外,程序员要不断学习新技术,自我提高,这样在爬虫的过程中才能够理解互联网的运作和结构。
最后,感谢好友唐松给予我一起创作这本书的机会,让我可以分享爬虫技术和当中的乐趣。
思路富邦智能应用有限公司行政总裁
陈智铨
前言二
近年来,大数据成为业界与学术界最火热的话题之一,数据已经成为每个公司极为重要的资产。互联网大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量。而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。
执笔本书的起因是我打算在知乎上写博客向香港中文大学市场营销学的研究生讲解 Python 网络爬虫技术,让这些商科学生掌握一些大数据时代重要的技术能力。因此,本书除了面向技术人员外,还面向不懂编程的小白。本书尽量做到浅显易懂,希望能够将网络爬虫学习的门槛降低,让大家都能享受到使用网络爬虫编程的乐趣。
我是从商科自学转到数据科学的,因此编程和数据挖掘能力都是上网自学的。在这个过程中,我深刻地体会到,与不知所云的教学相比,深入浅出的教学对学习效率有很大提升。因此,学习知识最重要的两点是,通过富有逻辑的框架解构学习和通过实战解决实际问题,从而增强学习效果。本书的内容侧重于将网络爬虫技术进行框架性的解构,并使用代码将爬虫技术应用于抓取真实的网站。
本书所有代码均在 Python 3.6中测试通过,可以从 Github 下载这些代码,地址为 https://github.com/Santostang/PythonScraping;也可以从百度网盘下载,地址为 http://pan.baidu.com/s/1c2w9rck(注意区分数字和字母大小写)。为了方便大家练习 Python网络爬虫,我专门搭建了一个博客网站用于 Python网络爬虫的教学,本书教学部分的爬虫全部基于爬取我的个人博客网站(www.santostang.com)。一方面,由于这个网站不会更改设计和框架,因此本书的网络爬虫代码可以一直使用;另一方面,由于这是我自己的博客网站,因此可以避免一些法律上的风险。
本书主要分为三部分:基础部分(第 1~6章)、进阶部分(第 7~12章)和项目实践部分(第 13~16章),以此来针对不同类型的读者。如果你是 Python 爬虫的初学者,那么可以先学习基础部分,这部分每一章的最后都有自我实践题,读者可以通过实践题熟悉编写 Python 爬虫代码。如果你已经对 Python 爬虫有所了解,但是在实践中遇到了各种问题,那么可以直接学习进阶部分,这部分为你在爬虫实践中遇到的问题提供了解决方案。本书最后的项目实践部分是让你在学习 Python 爬虫后,可以通过在真实网站中练习来消化和吸收 Python爬虫的知识。
序言
本书就是帮助你打开数据信息收集大门的钥匙!本书从最基本的 Python语言讲起,完整地介绍了爬虫程序的每一个知识模块,同时附有最新案例教大家如何利用学到的知识进行实操,让不了解 Python语言的人也可以在短时间内掌握爬虫程序的编写,快速成长为爬虫高手。本书条理清晰、层次分明,实用性极强。
作者唐松是一名年轻有为、经验丰富的数据分析专家。他通过这本书和读者分享多年网络爬虫和数据挖掘的经验。这本书是 IT人士、企业管理人员、市场营销人员和有志于在数据分析方面有所突破的人士值得一读的好书。
香港中文大学市场系教授
刘建南
2017年 6月 26日
推荐序二
“工欲善其事,必先利其器。”
───《论语·卫灵公》
读这本书需要考虑这样一个问题:到底是学习 Python重要,还是掌握网络爬虫重要,抑或两者一样重要?对于这个问题的回答将直接影响读者最后能从这本书里学到什么。我来给大家一个简单的定义,网络爬虫是“事”,而 Python是“器”,是用来进行网络爬虫的锋刃。在这个定义下,这一问题就转化成了究竟是“事”重要还是“器”重要。
如果你是管理者,那么这个答案就更接近于“事”。因为管理者在向所在的团队发号施令之前,要先思考你的想法到底能否和所在团队的技术优势相契合。近年来,我们眼见大数据以“迅雷不及掩耳之势”席卷全球,但这场旋风的背后是一个残酷的事实:很多公司在迈入大数据领域后遭遇“滑铁卢”。究其原因,管理层的惰性首当其冲。当管理层只知道在高尔夫球场对大数据高谈阔论时,我们又如何期冀技术部门能够懂得并且做出管理者想要做的“事”呢?因此,对于本书的前 12章,管理者要能够清晰地回答两个问题:第一个问题是这个章节探讨的是什么问题,第二个问题是为什么要探讨这个问题。举个例子,对于第 1章,如果你的公司想开发一款新的绿色产品,当你想通过爬取淘宝网上所有绿色产品(如空气净化器)的销量数据来做潜在市场评估时,就要考虑爬虫有哪些潜在的法律纠纷、公司的爬虫合不合法。再举个例子,对于第 6章,你需要思考数据的存储对公司有什么影响,如何存储数据更有利于公司各个部门(如销售部门)的高效利用,能够更方便地与公司的数据库对接等。
如果你是技术人员、学者或技术“小白”,这本书就是教你如何“利其器”。与其认为是通过 Python学习网络爬虫,读者不如把这本书看作是通过爬虫来学习 Python。Python是“器”,就意味着世上也有其他的“器”(如 R、Java等),而这些工具之间的基本思想往往是类似的。例如,都免不了做逻辑判断(如 if、then)和循环计算(如 for循环),软件语言之间往往是一通百通。 Python是时下热门的开源软件(这意味着有人源源不断地开发更新且更强大的包给你用),又不像 C语言那般底层而需要巨大的学习成本。读者若是能始于爬虫,一步一个脚印,慢慢掌握好 Python这门语言,将来还可以利用 Python甚至是其他语言去做一些附加值更高的“事”,如人工智能、统计建模等。很遗憾,这条学习的道路没有什么捷径可走,唯一的方法就是不断尝试、不断失败、不断改进。本书最后 4章综合考虑登录、爬虫速度、反爬虫、大规模爬虫等现实中遇到的问题,为读者提供一系列非常值得着手操作的实战演练范例。本书语言质朴、逻辑清晰、循序渐进,即使是零基础的读者,在本书的辅导下也可以对 Python爬虫一步步地从入门到精通。
工欲善其事,必先利其器。希望读者能够借此书获得“事”或“器”,了解技术团队的运作模式,同时希望技术“小白”能通过时常查阅此书不断解决爬虫中遇到的疑惑。
香港中文大学市场系博士生
李宜威
2017年 6月 25日