《Python 网络爬虫从入门到精通》的主旨是介绍如何结合Python进行网络爬虫程序的开发,从Python语言的基本特性入手,详细介绍了Python网络爬虫开发的各个方面,涉及HTTP、HTML、JavaScript、正则表达式、自然语言处理、数据科学等不同领域的内容。全书共15章,包括Python基础知识、网站分析、网页解析、Python文件读写、Python与数据库、AJAX技术、模拟登录、文本与数据分析、网站测试、Scrapy爬虫框架、爬虫性能等多个主题。本书内容覆盖网络抓取与爬虫编程中的主要知识和技术,在重视理论基础的前提下,从实用性和丰富性出发,结合实例演示了爬虫编写的核心流程。
《Python 网络爬虫从入门到精通》适合Python语言初学者、网络爬虫技术爱好者、数据分析从业人士以及高等院校计算机科学、软件工程等相关专业的师生阅读。
1. 内容全面,结构清晰:本书详细介绍了网络爬虫技术的方方面面,讨论了数据抓取、数据处理和数据分析的整个流程。全书结构清晰,坚持理论知识与实践操作结合。
2. 循序渐进,生动简洁:从*简单的Python程序示例开始,在网络爬虫的核心主题之下一步步深入,兼顾内容的广度与深度。在行文中,使用生动简洁的阐述方式,力争详略得当。
3. 示例丰富,实战性强:网络爬虫是实践性、操作性非常强的技术,本书将提供丰富的代码来作为读者的参考,同时对必要的术语和代码进行解释。从生活实际出发,选取实用性、趣味性兼具的主题进行网络爬虫实践。
网络爬虫又叫网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。它们被广泛应用于互联网搜索引擎及各种网站的开发中,同时也是大数据和数据分析领域中的重要角色。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。爬虫可以按一定逻辑大批量采集目标页面内容,并对数据进行进一步处理,人们借此能够更好、更快地获取并使用他们感兴趣的信息,从而方便地完成很多有价值的工作。
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,其语法简洁、功能强大,在众多高级语言中拥有十分出色的编写效率,同时还拥有活跃的开源社区和海量程序库,十分适合用于网络内容的抓取和处理。本书以Python语言为基础,由浅入深地探讨网络爬虫技术,同时,通过具体的程序编写和实践来帮助读者了解和学习Python网络爬虫。
《Python 网络爬虫从入门到精通》共15章,分4部分讲解,其中第1~3章为基础部分,第4~6章为进阶部分,第7~9章为高级部分,第10~15章为实践部分。第1、2章介绍了Python语言和爬虫编写的基础知识;第3章讨论了Python中文件和数据的存储,涉及数据库的相关知识;第4、5章的内容针对相对复杂一些的爬虫抓取任务,主要着眼于动态内容和表单登录等方面;第6章探讨对抓取到的原始数据的深入处理和分析;第7~9章旨在从不同视角讨论爬虫程序,基于爬虫介绍了多个不同主题的内容;第10~15章通过一些实际的例子深入讨论了爬虫编程的理论知识。
《Python 网络爬虫从入门到精通》的主要特点有:
? 内容全面,结构清晰。本书详细介绍了网络爬虫技术的方方面面,讨论了数据抓取、数据处理和数据分析的整个流程。全书结构清晰,坚持理论知识与实践操作相结合。
? 循序渐进,生动简洁。本书从最简单的Python程序示例开始,围绕网络爬虫这个主题一步步深入讲解,兼顾内容的广度与深度。本书行文使用生动简洁的阐述方式,力争详略得当。
? 示例丰富,实战性强。网络爬虫是实践性、操作性非常强的技术,本书提供丰富的代码供读者参考,同时对必要的术语和代码进行解释。从实际应用出发,选取实用性、趣味性兼具的主题进行网络爬虫实践。
? 内容新颖,不落窠臼。本书的程序代码均基于最新的Python 3版本编写,并使用了目前主流的各种Python框架和库,注重内容的时效性。网络爬虫需要动手实践才能真正理解,本书最大程度地保证了代码与程序示例的易用性和易读性。
《Python 网络爬虫从入门到精通》主要由吕云翔、张扬、韩延刚编写,另外,曾洪立参与了部分内容的编写及资料整理工作。
由于作者水平有限,不足之处在所难免,欢迎广大读者联系交流(邮箱:yunxianglu@ hotmail.com)。
第1章 Python与网络爬虫1
1.1 Python语言1
1.1.1 什么是Python1
1.1.2 Python的应用现状2
1.2 Python的安装与开发环境配置3
1.2.1 在Windows上安装3
1.2.2 在Ubuntu和Mac OS上安装4
1.2.3 PyCharm的使用5
1.2.4 Jupyter Notebook9
1.3 Python基本语法12
1.3.1 HelloWorld与数据类型12
1.3.2 逻辑语句19
1.3.3 Python中的函数与类22
1.3.4 Python从0到125
1.4 互联网、HTTP与HTML25
1.4.1 互联网与HTTP25
1.4.2 HTML27
1.5 Hello, Spider!29
1.5.1 第一个爬虫程序29
1.5.2 对爬虫的思考31
1.6 调研网站33
1.6.1 网站的robots.txt与Sitemap33
1.6.2 查看网站所用技术36
1.6.3 查看网站所有者信息37
1.6.4 使用开发者工具检查网页39
1.7 本章小结42
第2章 数据采集43
2.1 从抓取开始43
2.2 正则表达式44
2.2.1 初见正则表达式44
2.2.2 正则表达式的简单使用46
2.3 BeautifulSoup49
2.3.1 安装与上手49
2.3.2 BeautifulSoup的基本使用52
2.4 XPath与lxml55
2.4.1 XPath55
2.4.2 lxml与XPath的使用57
2.5 遍历页面59
2.5.1 抓取下一个页面59
2.5.2 完成爬虫60
2.6 使用API63
2.6.1 API简介63
2.6.2 API使用示例65
2.7 本章小结68
第3章 文件与数据存储69
3.1 Python中的文件69
3.1.1 基本的文件读写69
3.1.2 序列化72
3.2 字符串72
3.3 Python与图片74
3.3.1 PIL与Pillow74
3.3.2 Python与OpenCV简介76
3.4 CSV文件77
3.4.1 CSV简介77
3.4.2 CSV的读写77
3.5 使用数据库79
3.5.1 使用MySQL80
3.5.2 使用SQLite381
3.5.3 使用SQLAlchemy83
3.5.4 使用Redis85
3.6 其他类型的文档86
3.7 本章小结90
第4章 JavaScript与动态内容91
4.1 JavaScript与AJAX技术91
4.1.1 JavaScript语言91
4.1.2 AJAX95
4.2 抓取AJAX数据96
4.2.1 分析数据96
4.2.2 数据提取100
4.3 抓取动态内容107
4.3.1 动态渲染页面107
4.3.2 使用Selenium107
4.3.3 PyV8与Splash114
4.4 本章小结118
第5章 表单与模拟登录119
5.1 表单119
5.1.1 表单与POST119
5.1.2 POST发送表单数据121
5.2 Cookie124
5.2.1 什么是Cookie124
5.2.2 在Python中使用Cookie125
5.3 模拟登录网站128
5.3.1 分析网站128
5.3.2 通过Cookie模拟登录129
5.4 验证码133
5.4.1 图片验证码133
5.4.2 滑动验证134
5.5 本章小结139
第6章 数据的进一步处理140
6.1 Python与文本分析140
6.1.1 什么是文本分析140
6.1.2 jieba与SnowNLP141
6.1.3 NLTK145
6.1.4 文本分类与聚类149
6.2 数据处理与科学计算150
6.2.1 从MATLAB到Python150
6.2.2 NumPy151
6.2.3 Pandas156
6.2.4 Matplotlib163
6.2.5 SciPy与SymPy167
6.3 本章小结167
第7章 更灵活的爬虫168
7.1 更灵活的爬虫以微信数据抓取为例168
7.1.1 用Selenium抓取Web微信信息168
7.1.2 基于Python的微信API工具172
7.2 更多样的爬虫175
7.2.1 在BeautifulSoup和XPath之外175
7.2.2 在线爬虫应用平台179
7.2.3 使用urllib181
7.3 爬虫的部署和管理190
7.3.1 配置远程主机190
7.3.2 编写本地爬虫192
7.3.3 部署爬虫198
7.3.4 查看运行结果199
7.3.5 使用爬虫管理框架200
7.4 本章小结203
第8章 浏览器模拟与网站测试204
8.1 关于测试204
8.1.1 什么是测试204
8.1.2 什么是TDD205
8.2 Python的单元测试205
8.2.1 使用unittest205
8.2.2 其他方法208
8.3 使用Python爬虫测试网站209
8.4 使用Selenium测试212
8.4.1 Selenium测试常用的网站交互212
8.4.2 结合Selenium进行单元测试214
8.5 本章小结215
第9章 更强大的爬虫216
9.1 爬虫框架216
9.1.1 Scrapy是什么216
9.1.2 Scrapy安装与入门218
9.1.3 编写Scrapy爬虫221
9.1.4 其他爬虫框架223
9.2 网站反爬虫224
9.2.1 反爬虫的策略224
9.2.2 伪装headers225
9.2.3 使用代理228
9.2.4 访问频率232
9.3 多进程与分布式233
9.3.1 多进程编程与爬虫抓取233
9.3.2 分布式爬虫235
9.4 本章小结235
第10章 爬虫实践:火车票余票实时提醒236
10.1 程序设计236
10.1.1 分析网页236
10.1.2 理解返回的JSON格式数据的意义238
10.1.3 微信消息推送238
10.1.4 运行并查看微信消息243
10.2 本章小结244
第11章 爬虫实践:爬取二手房数据并绘制热力图245
11.1 数据抓取245
11.1.1 分析网页245
11.1.2 地址转换成经纬度247
11.1.3 编写代码248
11.1.4 数据下载结果252
11.2 绘制热力图252
11.3 本章小结259
第12章 爬