本书主要介绍如何使用Python语言进行网络爬虫程序的开发,从Python语言的基本特性入手,详细介绍Python网络爬虫开发的多个方面,涉及HTTP、HTML、正则表达式、JavaScript、自然语言处理、数据处理与科学计算等不同领域的内容。全书共12章,包括基础篇、进阶篇、提高篇和实战篇4个部分。基础篇包括第1、2、3章,分别为Python基础及网络爬虫、静态网页抓取、数据存储。进阶篇包括第4、5、6章,分别为JavaScript与动态内容、模拟登录与验证码、爬虫数据的分析与处理。提高篇包括第7、8、9章,分别为爬虫的灵活性和多样性、Selenium模拟浏览器与网站测试、爬虫框架Scrapy与反爬虫。实战篇提供了3个实战项目供读者学习参考。本书内容覆盖网络数据抓取与爬虫编程中的主要知识和前沿技术。同时,本书在重视理论基础的前提下,从实用性和丰富度出发,结合实例演示爬虫程序编写的核心流程,将理论与实践结合,力求提高读者的网络爬虫实操技能。
本书可作为高等院校数据科学、统计学、计算机科学、软件工程等相关专业课程的教材,也可作为Python语言初学者、网络爬虫技术爱好者的参考书。
1.由北京航空航天大学拥有近20年软件开发、计算机教学经验的教师编写,权威性高,内容质量上乘
2.全新内容结构布局,丰富要点提示及课程目标,落实翻转课堂教学理念
3.基础详解 大量案例实战,立足于零基础人群实现网络爬虫从入门到精通
4.全新的丰富配套数字化资源,提供语法速查表与算法框架表,提供完整案例运行源代码
吕云翔 比利时布鲁塞尔自由大学应用科学学院应用信息技术专业硕士、经济学院工商管理专业硕士,北京航空航天大学软件学院副教授,硕士生导师。主要研究方向:软件工程、人工智能、大数据。具有多年的软件开发、项目管理、计算机教学经验,对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上安装 3
1.2.3 IDE的使用:以PyCharm为例 4
1.2.4 Jupyter Notebook简介 6
1.3 Python基础知识 7
1.3.1 Hello,World!与数据类型 7
1.3.2 逻辑语句 12
1.3.3 Python中的函数与类 14
1.3.4 更深入了解Python 16
1.4 互联网、HTTP与HTML 16
1.4.1 互联网与HTTP 16
1.4.2 HTML 17
1.5 Hello Spider 19
1.5.1 编写第 一个爬虫程序 19
1.5.2 对爬虫的思考 21
1.6 分析网站 22
1.6.1 robots.txt与Sitemap简介 22
1.6.2 网站技术分析 24
1.6.3 网站所有者信息分析 25
1.6.4 使用开发者工具检查目标网页 26
章节实训:Python环境的配置与爬虫的运行 28
思考与练习 28
第 2章 静态网页抓取 29
2.1 从抓取开始 29
2.2 正则表达式 30
2.2.1 什么是正则表达式 30
2.2.2 正则表达式的简单使用 31
2.3 BeautifulSoup爬虫 33
2.3.1 安装BeautifulSoup 33
2.3.2 BeautifulSoup的基本用法 35
2.4 XPath与lxml 37
2.4.1 XPath 37
2.4.2 lxml与XPath的使用 38
2.5 遍历页面 40
2.5.1 抓取下一个页面 40
2.5.2 完成爬虫 41
2.6 使用API 42
2.6.1 API简介 42
2.6.2 API使用示例 44
章节实训:哔哩哔哩直播间信息抓取练习 47
思考与练习 47
第3章 数据存储 48
3.1 Python中的文件 48
3.1.1 Python中的文件读写 48
3.1.2 对象序列化 50
3.2 Python中的字符串 50
3.3 Python中的图片 51
3.3.1 PIL与Pillow模块 51
3.3.2 Python与OpenCV简介 53
3.4 CSV文件 54
3.4.1 CSV简介 54
3.4.2 CSV的读写 54
3.5 数据库的使用 56
3.5.1 MySQL的使用 56
3.5.2 SQLite 3的使用 57
3.5.3 SQLAlchemy的使用 58
3.5.4 Redis的使用 59
3.5.5 MongoDB的使用 60
3.6 其他类型的文档 61
章节实训:使用Python 3读写SQLite 3数据库 63
思考与练习 64
进阶篇
第4章 JavaScript与动态内容 65
4.1 JavaScript与AJAX技术 65
4.1.1 JavaScript语言 65
4.1.2 AJAX 68
4.2 抓取AJAX数据 69
4.2.1 分析数据 69
4.2.2 数据提取 72
4.3 抓取动态内容 76
4.3.1 动态渲染页面 76
4.3.2 使用Selenium 76
4.3.3 PyV8与Splash 81
章节实训:抓取人民邮电出版社热销图书信息 83
思考与练习 84
第5章 模拟登录与验证码 85
5.1 表单 85
5.1.1 表单与POST 85
5.1.2 POST发送表单数据 87
5.2 Cookie 89
5.2.1 Cookie简介 89
5.2.2 在Python中Cookie的使用 90
5.3 模拟登录网站 91
5.3.1 分析网站 91
5.3.2 Cookie方法的模拟登录 92
5.4 验证码 94
5.4.1 图片验证码 94
5.4.2 滑动验证 96
章节实训:通过Selenium模拟登录Gitee并保存Cookie 99
思考与练习 99
第6章 爬虫数据的分析与处理 100
6.1 Python与文本分析 100
6.1.1 文本分析简介 100
6.1.2 jieba与SnowNLP 101
6.1.3 NLTK 104
6.1.4 文本分类与聚类 106
6.2 数据处理与科学计算 108
6.2.1 从MATLAB到Python 108
6.2.2 NumPy 108
6.2.3 Pandas 112
6.2.4 Matplotlib 116
6.2.5 Scipy与SymPy 118
章节实训:美国新冠疫情每日新增人数的可视化 119
思考与练习 119
提高篇
第7章 爬虫的灵活性和多样性 120
7.1 爬虫的灵活性以微信数据抓取为例 120
7.1.1 用Selenium抓取网页版微信数据 120
7.1.2 基于Python的微信API工具 123
7.2 爬虫的多样性 125
7.2.1 在BeautifulSoup和XPath之外 125
7.2.2 在线爬虫应用平台 127
7.2.3 使用urllib 129
7.3 爬虫的部署和管理 134
7.3.1 使用服务器部署爬虫 134
7.3.2 本地爬虫程序的编写 137
7.3.3 爬虫的部署 140
7.3.4 实时查看运行结果 141
7.3.5 使用框架管理爬虫 142
章节实训:基于PyQuery抓取菜鸟教程 144
思考与练习 145
第8章 Selenium模拟浏览器与网站测试 146
8.1 测试 146
8.1.1 什么是测试 146
8.1.2 什么是TDD 146
8.2 Python的单元测试 147
8.2.1 使用unittest 147
8.2.2 其他方法 149
8.3 使用Python网络爬虫测试网站 150
8.4 使用Selenium测试 152
8.4.1 使用Selenium测试常用的网站交互 152
8.4.2 结合Selenium进行单元测试 153
章节实训:使用Selenium抓取百度搜索引擎中关于爬虫的结果 154
思考与练习 155
第9章 爬虫框架Scrapy与反爬虫 156
9.1 爬虫框架 156
9.1.1 Scrapy简介 156
9.1.2 安装与学习Scrapy 157
9.1.3 Scrapy爬虫编写 159
9.1.4 其他爬虫框架介绍 161
9.2 网站反爬虫 162
9.2.1 反爬虫策略简介 162
9.2.2 伪装headers 163
9.2.3 代理IP的使用 165
9.2.4 控制访问频率 168
章节实训:使用反反爬虫策略抓取某日报网头版的标题内容 168
思考与练习 169
实战篇
第 10章 实战:保存感兴趣的图片 170
10.1 豆瓣网分析与爬虫设计 170
10.1.1 从需求出发 170
10.1.2 处理登录问题 171
10.2 编写爬虫程序 173
10.2.1 爬虫脚本 173
10.2.2 程序分析 176
10.2.3 运行并查看结果 178
第 11章 实战:抓取二手房数据并绘制热力图 179
11.1 数据抓取 179
11.1.1 网页分析 179
11.1.2 代码编写 181
11.1.3 运行并查看结果 183
11.2 绘制热力图 184
第 12章 实战:北京大兴国际机场航班出发时间数据抓取 189
12.1 程序设计 189
12.1.1 网页分析 189
12.1.2 将数据保存到数据库 190
12.2 爬虫编写 191
12.2.1 前置准备 191
12.2.2 代码编写 192
12.2.3 运行并查看结果 195
参考文献 196