首页>参考读物>计算机科学与技术>软件与程序设计

Python网络爬虫从入门到实践 第2版
作者 : 唐松 编著
出版日期 : 2019-06-07
ISBN : 978-7-111-62687-9
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 292
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

使用Python编写网络爬虫程序获取互联网上的大数据是当前的热门专题。本书内容包括三部分:基础部分、进阶部分和项目实践。基础部分(第1~7章)主要介绍爬虫的三个步骤——获取网页、解析网页和存储数据,并通过诸多示例的讲解,让读者能够从基础内容开始系统性地学习爬虫技术,并在实践中提升Python爬虫水平。进阶部分(第8~13章)包括多线程的并发和并行爬虫、分布式爬虫、更换IP等,帮助读者进一步提升爬虫水平。项目实践部分(第14~17章)使用本书介绍的爬虫技术对几个真实的网站进行抓取,让读者能在读完本书后根据自己的需求写出爬虫程序。

图书前言

近年来,大数据成为业界与学术界的热门话题之一,数据已经成为每个公司极为重要的资产。互联网上大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量,而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。
执笔本书的起因是我打算在知乎上写博客向香港中文大学市场营销学的研究生讲解Python 网络爬虫技术,让这些商科学生掌握一些大数据时代重要的技术。因此,本书除了面向技术人员外,还面向不懂编程的“小白”,希望能够将网络爬虫学习的门槛降低,让大家都能享受到使用网络爬虫编程的乐趣。过去的一年中,本书第1版帮助很多读者开启了Python和网络爬虫的世界,因此有幸获得出版社的邀请,在之前版本的基础上进行修改,更新书中的案例以及添加新的内容,形成第2版。
本书所有代码均在 Python 3.6 中测试通过,并存放在 Github 和百度网盘上:Github链接为 https://github.com/Santostang/PythonScraping;百度网盘链接为https://pan.baidu.com/s/14RA8Srew8tbqVT977JDvNw,提取码为h2kf。为了方便大家练习Python网络爬虫,我专门搭建了一个博客网站用于Python网络爬虫的教学,本书的教学部分全部基于爬取我的个人博客网(www.santostang.com)。一方面,由于这个网站不会更改设计和框架,因此本书的网络爬虫代码可以一直使用;另一方面,由于这是我自己的博客网站,因此可以避免一些法律上的风险。
读者对象
(1)对Python编程和网络爬虫感兴趣的大专院校师生,需要获取数据进行分析;
(2)打算转行或入行爬虫工程师、数据分析师、数据科学家的人士;
(3)需要使用网络爬虫技术自动获取数据分析的各行业人士。
勘误和支持
由于作者水平和能力有限,编写时间仓促,不妥之处在所难免,希望读者批评指正。本书的读者QQ群为798652826,欢迎读者加群交流。另外,也可以到我的博客www.santostang.com反馈意见,欢迎读者和网络爬虫爱好者不吝赐教。
如何阅读本书
本书分为17章。
第 1~7 章为基础部分,主要介绍Python入门,Python网络爬虫的获取网页、解析网页和存储数据三个流程,以及Scrapy爬虫框架。这部分每一章的最后都有自我实践题,读者可以通过实践题熟悉Python 爬虫代码的编写。
第 8~13 章为进阶部分,主要介绍多线程和多进程爬虫、反爬虫、服务器爬虫和分布式爬虫等进阶爬虫技术,这部分为你在爬虫实践中遇到的问题提供了解决方案。
第 14~17章为项目实践部分,每一章包含一个详细的爬虫案例,每个案例都覆盖之前章节的知识,让你在学习 Python 爬虫后,可以通过在真实网站中练习来消化和吸收 Python爬虫的知识。
本书几乎每章都使用案例来学习Python网络爬虫,希望告诉读者“通过实战解决实际问题,才能高效地学习新知识”。手输代码,练习案例,才是学习Python和网络爬虫的有效方法。
致谢
首先感谢卞诚君老师在我写书过程中给予的指导和帮助。没有他的提议,我不会想到将自己的网络爬虫博客整理成一本书出版,更不会有本书的第2版。
从转行数据分析,到申请去康奈尔大学读书,再到回国做数据分析师,我在计算机技术和数据科学的道路上,得到了无数贵人的帮助和提携。首先感谢刘建南教授带我进入了数据挖掘的大门,无私地将数据挖掘、营销知识和经验倾囊相授,您是我的启蒙老师,也是我一生的恩师。
感谢腾讯公司商业分析组和数据服务中心的各位同事,特别感谢我的组长张殿鹏和导师王欢,他们耐心地培养和教导我如何成为一名优秀的数据分析师,让我放手去挑战和尝试不同项目,坚持将数据分析的成果落地。
感谢一路走来,支持我、帮助我的前辈和朋友,包括香港中文大学的教授和朋友——马旭飞教授、李宜威博士、数据科学家周启航、数据分析师赵作栋、数据分析师王礼斌以及好友孙成帅、张蓓等,康奈尔大学的同学——数据科学家汤心韵等、思路富邦有限公司总裁陈智铨、数据科学家吴嘉杰。尤其感谢IBM香港CTO戴剑寒博士、香港中文大学(深圳)校长讲席教授贾建民博士、TalkingData腾云大学执行校长杨慧博士和DaoCloud首席架构师王天青在百忙中热情地为本书写推荐语。
感谢我的父母、妹妹和女朋友给我一贯的支持和帮助!

唐松
中国深圳

上架指导

计算机\程序设计

封底文字

丰富、真实的网络爬虫实例,从宏观框架到落地实战,深入浅出地讲述Python网络爬虫技术。

向所有从事或想要参与网络爬虫及数据分析工作的人强烈推荐本书。本书内容深入浅出,涵盖从基本的网页抓取、爬行机制到通过示例实践等更高级的主题,即使没有相关的Python编程经验的程序员也能够轻松读懂,实为工作中的理想选择。
——IBM全球杰出工程师,IBM香港首席技术官 戴剑寒


本书融合了唐松多年网络爬虫和数据挖掘的经验,脉络清晰、分析透彻、通俗易懂,同时提供了丰富的案例帮助读者快速上手。唐松在香港中文大学的课堂上曾分享过本书的很多内容,带领学生进入Python和网络爬虫的世界,使学生获益匪浅。建议每一位对Python编程和数据分析感兴趣的人士都读一读本书。
——香港中文大学(深圳)校长讲席教授 贾建民


这本书面向非工科类背景的Python学习者,是一本非常详细、生动的实战指南。唐松将自己在社科类研究和数据分析实践中积累的丰富经验融入本书,用真实的案例串起原本枯燥的技术知识,让人们再也不会“从开始到放弃”。建议每一位对网络爬虫有实践需求的泛数据爱好者都留存一本,放在案头,随时查阅。
——TalkingData CEO助理,腾云大学执行校长 杨 慧


Santos(唐松的英文名)出版本书第1版时就令人喜出望外。现在第2版也即将出版,我有幸提前拜读,从头至尾仔细阅读了几遍,收获颇多。本书详细阐述了Python、HTTP、Scrapy等基础知识,以及数据存储、高性能爬虫、分布式爬虫、反爬虫、爬虫实践等实用技术,可以帮助读者构建网络爬虫知识体系,同时通过丰富的实践案例让读者快速上手。
——DaoCloud首席架构师 王天青

作者简介

唐松 编著:唐松,康奈尔大学信息科学研究生,高考获全额奖学金就读于香港中文大学计量营销和金融学,毕业后与IBM合作A100项目,为美的、中信等公司实践大数据落地项目,热衷将数据科学与商业结合应用。

图书目录

前言
第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
1.2.2 网络爬虫的约束 5
1.3 网络爬虫的基本议题 6
1.3.1 Python爬虫的流程 7
1.3.2 三个流程的技术实现 7
第2章 编写第一个网络爬虫 9
2.1 搭建Python平台 10
2.1.1 Python的安装 10
2.1.2 使用pip安装第三方库 12
2.1.3 使用编辑器Jupyter 编程 13
2.1.4 使用编辑器Pycharm编程 15
2.2 Python 使用入门 18
2.2.1 基本命令 18
2.2.2 数据类型 19
2.2.3 条件语句和循环语句 21
2.2.4 函数 23
2.2.5 面向对象编程 24
2.2.6 错误处理 28
2.3 编写第一个简单的爬虫 29
2.3.1 第一步:获取页面 29
2.3.2 第二步:提取需要的数据 30
2.3.3 第三步:存储数据 32
2.4 Python实践:基础巩固 33
2.4.1 Python基础试题 34
2.4.2 参考答案 35
2.4.3 自我实践题 38
第3章 静态网页抓取 39
3.1 安装Requests 40
3.2 获取响应内容 40
3.3 定制Requests 41
3.3.1 传递URL参数 41
3.3.2 定制请求头 42
3.3.3 发送POST请求 43
3.3.4 超时 44
3.4 Requests爬虫实践:TOP250电影数据 44
3.4.1 网站分析 45
3.4.2 项目实践 45
3.4.3 自我实践题 47
第4章 动态网页抓取 48
4.1 动态抓取的实例 49
4.2 解析真实地址抓取 50
4.3 通过Selenium模拟浏览器抓取 55
4.3.1 Selenium的安装与基本介绍 55
4.3.2 Selenium的实践案例 57
4.3.3 Selenium获取文章的所有评论 58
4.3.4 Selenium的高级操作 61
4.4 Selenium爬虫实践:深圳短租数据 64
4.4.1 网站分析 64
4.4.2 项目实践 66
4.4.3 自我实践题 69
第5章 解析网页 70
5.1 使用正则表达式解析网页 71
5.1.1 re.match方法 71
5.1.2 re.search方法 74
5.1.3 re.findall方法 74
5.2 使用BeautifulSoup解析网页 76
5.2.1 BeautifulSoup的安装 76
5.2.2 使用BeautifulSoup获取博客标题 77
5.2.3 BeautifulSoup的其他功能 78
5.3 使用lxml解析网页 82
5.3.1 lxml的安装 82
5.3.2 使用lxml获取博客标题 82
5.3.3 XPath的选取方法 84
5.4 总结 85
5.5 BeautifulSoup爬虫实践:房屋价格数据 86
5.5.1 网站分析 86
5.5.2 项目实践 87
5.5.3 自我实践题 89
第6章 数据存储 90
6.1 基本存储:存储至TXT或CSV 91
6.1.1 把数据存储至TXT 91
6.1.2 把数据存储至CSV 93
6.2 存储至MySQL数据库 94
6.2.1 下载安装MySQL 95
6.2.2 MySQL的基本操作 99
6.2.3 Python操作MySQL数据库 104
6.3 存储至MongoDB数据库 106
6.3.1 下载安装MongoDB 107
6.3.2 MongoDB的基本概念 110
6.3.3 Python操作MongoDB数据库 112
6.3.4 RoboMongo的安装与使用 113
6.4 总结 115
6.5 MongoDB爬虫实践:虎扑论坛 116
6.5.1 网站分析 116
6.5.2 项目实践 117
6.5.3 自我实践题 123
第7章 Scrapy框架 124
7.1 Scrapy是什么 125
7.1.1 Scrapy架构 125
7.1.2 Scrapy数据流(Data Flow) 126
7.1.3 选择Scrapy还是Requests+bs4 127
7.2 安装Scrapy 128
7.3 通过Scrapy抓取博客 128
7.3.1 创建一个Scrapy项目 128
7.3.2 获取博客网页并保存 129
7.3.3 提取博客标题和链接数据 131
7.3.4 存储博客标题和链接数据 133
7.3.5 获取文章内容 134
7.3.6 Scrapy的设置文件 136
7.4 Scrapy爬虫实践:财经新闻数据 137
7.4.1 网站分析 137
7.4.2 项目实践 138
7.4.3 自我实践题 141
第8章 提升爬虫的速度 142
8.1 并发和并行,同步和异步 143
8.1.1 并发和并行 143
8.1.2 同步和异步 143
8.2 多线程爬虫 144
8.2.1 简单的单线程爬虫 145
8.2.2 学习Python多线程 145
8.2.3 简单的多线程爬虫 148
8.2.4 使用Queue的多线程爬虫 150
8.3 多进程爬虫 153
8.3.1 使用multiprocessing的多进程爬虫 153
8.3.2 使用Pool + Queue的多进程爬虫 155
8.4 多协程爬虫 158
8.5 总结 160
第9章 反爬虫问题 163
9.1 为什么会被反爬虫 164
9.2 反爬虫的方式有哪些 164
9.2.1 不返回网页 165
9.2.2 返回非目标网页 165
9.2.3 获取数据变难 166
9.3 如何“反反爬虫” 167
9.3.1 修改请求头 167
9.3.2 修改爬虫的间隔时间 168
9.3.3 使用代理 171
9.3.4 更换IP地址 172
9.3.5 登录获取数据 172
9.4 总结 172
第10章 解决中文乱码 173
10.1 什么是字符编码 174
10.2 Python的字符编码 176
10.3 解决中文编码问题 179
10.3.1 问题1:获取网站的中文显示乱码 179
10.3.2 问题2:非法字符抛出异常 180
10.3.3 问题3:网页使用gzip压缩 181
10.3.4 问题4:读写文件的中文乱码 182
10.4 总结 184
第11章 登录与验证码处理 185
11.1 处理登录表单 186
11.1.1 处理登录表单 186
11.1.2 处理cookies,让网页记住你的登录 190
11.1.3 完整的登录代码 193
11.2 验证码的处理 194
11.2.1 如何使用验证码验证 195
11.2.2 人工方法处理验证码 197
11.2.3 OCR处理验证码 200
11.3 总结 203
第12章 服务器采集 204
12.1 为什么使用服务器采集 205
12.1.1 大规模爬虫的需要 205
12.1.2 防止IP地址被封杀 205
12.2 使用动态IP拨号服务器 206
12.2.1 购买拨号服务器 206
12.2.2 登录服务器 206
12.2.3 使用Python更换IP 208
12.2.4 结合爬虫和更换IP功能 209
12.3 使用Tor代理服务器 210
12.3.1 Tor的安装 211
12.3.2 Tor的使用 213
第13章 分布式爬虫 218
13.1 安装Redis 219
13.2 修改Redis配置 222
13.2.1 修改Redis密码 222
13.2.2 让Redis服务器被远程访问 222
13.2.3 使用Redis Desktop Manager管理 223
13.3 Redis分布式爬虫实践 223
13.3.1 安装Redis库 224
13.3.2 加入任务队列 224
13.3.3 读取任务队列并下载图片 225
13.3.4 分布式爬虫代码 226
13.4 总结 228
第14章 爬虫实践一:维基百科 229
14.1 项目描述 230
14.1.1 项目目标 230
14.1.2 项目描述 230
14.1.3 深度优先和广度优先 232
14.2 网站分析 233
14.3 项目实施:深度优先的递归爬虫 235
14.4 项目进阶:广度优先的多线程爬虫 237
14.5 总结 241
第15章 爬虫实践二:知乎Live 242
15.1 项目描述 243
15.2 网站分析 243
15.3 项目实施 245
15.3.1 获取所有Live 245
15.3.2 获取Live的听众 248
15.4 总结 251
第16章 爬虫实践三:百度地图API 252
16.1 项目描述 253
16.2 获取API秘钥 254
16.3 项目实施 255
16.3.1 获取所有拥有公园的城市 257
16.3.2 获取所有城市的公园数据 258
16.3.3 获取所有公园的详细信息 262
16.4 总结 266
第17章 爬虫实践四:畅销书籍 267
17.1 项目描述 268
17.2 网站分析 268
17.3 项目实施 270
17.3.1 获取亚马逊的图书销售榜列表 270
17.3.2 获取所有分类的销售榜 274
17.3.3 获取图书的评论 276
17.4 总结 279

教学资源推荐
作者: (美)Y.Daniel Liang
作者: (美)David Vandevoorde
作者: 郑阿奇,梁敬东 主编
作者: 辛运帏 高宁 徐文拴 等编著
参考读物推荐
作者: 陆嘉恒 著
作者: [美] 詹森·贝尔(Jason Bell)著
作者: [美]易格恩?阿格佛温(Eugene Agafonov)著