本书的主旨是介绍如何结合Python进行网络爬虫程序的开发,从Python语言的基本特性入手,详细介绍了Python爬虫开发的各个方面,涉及包括HTTP、HTML、JavaScript、正则表达式、自然语言处理、数据科学等不同领域的内容。全书共分为15章,包括了Python基础知识、网站分析、网页解析、Python文件读写、Python与数据库、AJAX技术、模拟登录、文本与数据分析、网站测试、Scrapy爬虫框架、爬虫性能等多个主题。内容覆盖网络抓取与爬虫编程中的主要知识和技术,在重视理论基础的前提下,从实用性和丰富度出发,结合实例演示了爬虫编写的核心流程。
本书适合Python语言初学者、网络爬虫技术爱好者、数据分析从业人士以及高等院校计算机科学、软件工程等相关专业的师生阅读。
?内容全面,结构清晰:本书详细介绍了网络爬虫技术的方方面面,讨论了数据抓取、数据处理和数据分析的整个流程。全书结构清晰,坚持理论知识与实践操作结合。
1.循序渐进,生动简洁:从简单的Python程序示例开始,在网络爬虫的核心主题之下一步步深入,兼顾内容的广度与深度。在行文中,使用生动简洁的阐述方式,力争详略得当。
2.示例丰富,实战性强:网络爬虫是实践性、操作性非常强的技术,本书将提供丰富的代码来作为读者的参考,同时对必要的术语和代码进行解释。从生活实际出发,选取实用性、趣味性兼具的主题进行网络爬虫实践。
3.内容新颖,不落窠臼:本书中程序代码均采用的Python 3版本,并使用了目前主流的各种Python框架和库来编写程序,注重内容的时效性。网络爬虫需要动手实践才能真正理解,本书程度地保证了代码与程序示例的易用性和易读性。
吕云翔,比利时布鲁塞尔大学应用科学学院应用信息技术专业硕士、经济学院工商管理专业硕士。具有多年的软件开发、项目管理、计算机教学经验。对IT行业具有较全面的认识。2003至今任北航软件学院副教授。研究领域包括:软件工程 IT项目管理。
第1章 Python与网络爬虫 1
1.1 Python简介 1
1.1.1 什么是Python 1
1.1.2 Python的应用现状 2
1.2 Python的安装与开发环境配置 3
1.2.1 在Windows操作系统上安装 3
1.2.2 在Ubuntu和macOS操作系统上安装 4
1.2.3 PyCharm的使用 5
1.2.4 Jupyter Notebook 9
1.3 Python基本语法 11
1.3.1 HelloWorld与数据类型 11
1.3.2 逻辑语句 17
1.3.3 Python中的函数与类 20
1.3.4 Python从0到1 21
1.4 互联网与HTTP、HTML 22
1.4.1 互联网与HTTP 22
1.4.2 HTML 23
1.5 Hello, Spider! 25
1.5.1 个爬虫程序 25
1.5.2 思考我们的爬虫 27
1.6 调研网站 27
1.6.1 网站的robots.txt与Sitemap 27
1.6.2 查看网站所用技术 30
1.6.3 查看网站所有者信息 31
1.6.4 使用开发者工具检查网页 32
1.7 本章小结 35
第2章 数据采集 36
2.1 从抓取开始 36
2.2 正则表达式 37
2.2.1 初见正则表达式 37
2.2.2 正则表达式的简单使用 38
2.3 BeautifulSoup 41
2.3.1 BeautifulSoup的安装 41
2.3.2 BeautifulSoup的基本使用方法 43
2.4 XPath与lxml 46
2.4.1 XPath 46
2.4.2 lxml与XPath的使用方法 47
2.5 遍历页面 49
2.5.1 抓取下一个页面 49
2.5.2 完成爬虫 50
2.6 API 52
2.6.1 API简介 52
2.6.2 API使用示例 54
2.7 本章小结 57
第3章 文件与数据存储 58
3.1 Python中的文件 58
3.1.1 基本的文件读写 58
3.1.2 序列化 60
3.2 字符串 61
3.3 Python与图片 62
3.3.1 PIL与Pillow 62
3.3.2 OpenCV简介 64
3.4 CSV文件 65
3.4.1 CSV简介 65
3.4.2 CSV的读写 65
3.5 使用数据库 67
3.5.1 使用MySQL 67
3.5.2 使用SQLite3 68
3.5.3 使用SQLAlchemy 70
3.5.4 使用Redis 71
3.6 其他类型的文档 72
3.7 本章小结 77
第4章 JavaScript与动态内容 78
4.1 JavaScript与Ajax技术 78
4.1.1 JavaScript简介 78
4.1.2 Ajax技术 81
4.2 抓取Ajax数据 82
4.2.1 分析数据 82
4.2.2 提取数据 86
4.3 抓取动态内容 92
4.3.1 动态渲染页面 92
4.3.2 使用Selenium 92
4.3.3 PyV8与Splash 98
4.4 本章小结 101
第5章 表单与模拟登录 102
5.1 表单 102
5.1.1 表单与POST 102
5.1.2 POST发送表单数据 104
5.2 Cookie 106
5.2.1 Cookie简介 106
5.2.2 在Python中使用Cookie 108
5.3 模拟登录网站 110
5.3.1 分析网站 110
5.3.2 通过Cookie模拟登录 111
5.4 验证码 114
5.4.1 图片验证码 114
5.4.2 滑动验证 116
5.5 本章小结 120
第6章 数据的进一步处理 121
6.1 Python与文本分析 121
6.1.1 文本分析简介 121
6.1.2 jieba与SnowNLP 122
6.1.3 NLTK 125
6.1.4 文本分类与聚类 128
6.2 数据处理与科学计算 130
6.2.1 从MATLAB到Python 130
6.2.2 NumPy 131
6.2.3 pandas 135
6.2.4 Matplotlib 140
6.2.5 SciPy与SymPy 143
6.3 本章小结 144
第7章 更灵活的爬虫 145
7.1 更灵活的爬虫——以微信数据抓取为例 145
7.1.1 用Selenium抓取Web微信信息 145
7.1.2 基于Python的微信API工具 149
7.2 多样的爬虫 151
7.2.1 在BeautifulSoup和XPath之外 151
7.2.2 在线爬虫应用平台 154
7.2.3 使用urllib 156
7.3 爬虫的部署和管理 163
7.3.1 配置远程主机 163
7.3.2 编写本地爬虫 165
7.3.3 部署爬虫 169
7.3.4 查看运行结果 170
7.3.5 使用爬虫管理框架 171
7.4 本章小结 174
第8章 模拟浏览器与网站测试 175
8.1 关于测试 175
8.1.1 测试简介 175
8.1.2 TDD 175
8.2 Python的单元测试 176
8.2.1 使用unittest 176
8.2.2 其他方法 178
8.3 使用Python爬虫测试网站 179
8.4 使用Selenium测试 181
8.4.1 Selenium测试常用的网站交互 182
8.4.2 结合Selenium进行单元测试 183
8.5 本章小结 184
第9章 更强大的爬虫 185
9.1 爬虫框架 185
9.1.1 Scrapy简介 185
9.1.2 Scrapy安装与入门 186
9.1.3 编写Scrapy爬虫 189
9.1.4 其他爬虫框架 191
9.2 网站反爬虫 192
9.2.1 反爬虫的策略 192
9.2.2 伪装headers 193
9.2.3 使用代理IP地址 196
9.2.4 修改访问频率 199
9.3 多进程与分布式 199
9.3.1 多进程编程与爬虫抓取 199
9.3.2 分布式爬虫 201
9.4 本章小结 202
第10章 实战:购物网站评论抓取 203
10.1 查看网络数据 203
10.2 编写爬虫 206
10.3 本章小结 211
第11章 实战:爬虫数据的深入分析与数据处理 212
11.1 明确目标与数据准备 212
11.1.1 明确目标 212
11.1.2 数据准备 212
11.1.3 工具选择 213
11.2 初步分析 214
11.2.1 用户角度分析 214
11.2.2 电影角度分析 217
11.3 电影推荐 220
11.4 本章小结 221
第12章 实战:抓取商品价格信息 222
12.1 抓取商品历史价格 222
12.1.1 网页分析 222
12.1.2 编写爬虫 225
12.1.3 运行结果 230
12.2 本章小结 231
第13章 实战:模拟登录爬虫 232
13.1 模拟登录POJ提交代码并抓取评测结果 232
13.1.1 网页请求分类 232
13.1.2 网页分析 233
13.1.3 编写爬虫 235
13.1.4 运行结果 238
13.2 本章小结 238
第14章 实战:音乐评论内容的抓取与分析 239
14.1 jieba库 239
14.2 wordcloud库 239
14.3 抓取音乐的评论内容 240
14.3.1 网页分析 240
14.3.2 编写爬虫 241
14.3.3 运行结果 243
14.4 本章小结 244
第15章 实战:异步爬虫程序实践 245
15.1 项目分析 245
15.2 数据存储 245
15.3 页面下载器 247
15.3.1 网络请求 248
15.3.2 页面解码 249
15.4 生产者—消费者模型 250
15.4.1 调度器 250
15.4.2 消费者 251
15.4.3 生产者 253
15.5 客户端界面设计 254
15.5.1 首页 255
15.5.2 搜索结果页 255
15.5.3 新闻详情页 256
15.5.4 主窗口和运行效果 257
15.6 本章小结 259