| 作者 |
| 韦世东 |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121394065 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 Python3是当前市面上极受欢迎的人工智能和网络爬虫语言。本书介绍了爬虫方面更深入的知识。书中首先回顾了爬虫的基础知识;然后详细介绍爬虫常用工具与库的相关知识;接着学习 Redis, 为后面的学习打下基础;然后讨论了 Redis 在分布式爬虫中的作用以及分布式爬虫的原理、分类与实现方法;再进一步学习增量爬取的原理与实现方法;然后通过学习网页文本抽取方法和智能抽取方法实现了大规模、多网站的数据爬取;在部署方面通过了解、剖析成熟稳定的爬虫部署平台 Scrapyd,并根据实际业务需求重新构建了一套兼容性更强的爬虫部署平台;最后学习了 Python 中常用的几个任务调度库与框架,通过了解 Celery 逻辑与结构,我们掌握了调度相关的知识,并根据实际业务需求构建了一套支持动态任务增删的任务调度平台。 |
| 目录 |
| 第1 章 爬虫程序的构成和完整链条 ........................................................................ 1 1.1 一个简单的爬虫程序 ................................................................................ 1 1.2 爬虫的完整链条 ........................................................................................ 3 1.3 爬取下来的数据被用在什么地方 ............................................................ 7 1.4 爬虫工程师常用的库 .............................................................................. 11 1.4.1 网络请求库 .................................................................................. 11 1.4.2 网页文本解析............................................................................... 19 1.5 数据存储 .................................................................................................. 30 1.5.1 将数据存入MySQL 数据库 ........................................................ 31 1.5.2 将数据存入MongoDB 数据库 .................................................... 34 1.5.3 将数据存入Redis 数据库 ............................................................ 36 1.5.4 Excel 文件的读写 ........................................................................ 38 1.6 小试牛刀——出版社新闻资讯爬虫 ....................................................... 42 实践题 ............................................................................................................... 46 本章小结 ........................................................................................................... 47 第2 章 自动化工具的使用 ...................................................................................... 48 2.1 网页渲染工具 .......................................................................................... 48 2.1.1 WebDriver 是什么 ........................................................................ 51 2.1.2 Selenium 的介绍和基本使用 ....................................................... 52 2.1.3 Pyppeteer 的介绍和基本使用 ...................................................... 59 2.1.4 Splash 知识扩展 ........................................................................... 61 本节小结 .................................................................................................. 62 2.2 App 自动化工具 ...................................................................................... 62 2.2.1 Android 调试桥 ............................................................................ 62 2.2.2 Airtest Project 与Poco ................................................................. 64 VIII Python3 网络爬虫宝典 2.2.3 爬取App 中的图片 ...................................................................... 75 2.2.4 控制多台设备............................................................................... 78 本节小结 .................................................................................................. 79 实践题 ............................................................................................................... 79 本章小结 ........................................................................................................... 79 第3 章 增量爬取的原理与实现 .............................................................................. 80 3.1 增量爬取的分类和实现原理 .................................................................. 81 3.1.1 增量爬取的分类 ........................................................................... 81 3.1.2 增量爬取的实现原理 ................................................................... 83 本节小结 .................................................................................................. 88 3.2 增量池的复杂度和效率 .......................................................................... 88 3.2.1 增量池的时间复杂度 ................................................................... 88 3.2.2 增量池的空间复杂度 ................................................................... 95 本节小结 ................................................................................................ 103 3.3 Redis 的数据持久化 .............................................................................. 103 3.3.1 持久化方式的分类和特点 ......................................................... 103 3.3.2 RDB 持久化的实践 ................................................................... 106 3.3.3 AOF 持久化的实践 .................................................................... 112 3.3.4 Redis 密码持久化 ...................................................................... 115 本节小结 ................................................................................................ 115 实践题 ............................................................................................................. 115 本章小结 ......................................................................................................... 116 第4 章 分布式爬虫的设计与实现 ........................................................................ 117 4.1 分布式爬虫的原理和分类 .................................................................... 117 4.1.1 分布式爬虫的原理 ..................................................................... 117 4.1.2 分布式爬虫的分类 ..................................................................... 120 4.1.3 共享队列的选择 ......................................................................... 122 本节小结 ................................................................................................ 125 4.2 分布式爬虫库Scrapy-Redis .................................................................. 126 4.2.1 Scrapy-Redis 的介绍和基本使用 .............................................. 127 4.2.2 去重器、调度器和队列的源码解析 ......................................... 129 IX 本节小结 ................................................................................................ 134 4.3 基于Redis 的分布式爬虫 ..................................................................... 134 4.3.1 对等分布式爬虫的实现 ............................................................. 135 4.3.2 主从分布式爬虫的实现 ............................................................. 139 本节小结 ................................................................................................ 141 4.4 基于RabbitMQ 的分布式爬虫 ............................................................. 141 4.4.1 RabbitMQ 的安装和基本操作 ................................................... 142 4.4.2 分布式爬虫的具体实现 ............................................................. 146 本节小结 ................................................................................................ 152 实践题 ............................................................................................................. 152 本章小结 ......................................................................................................... 152 第5 章 网页正文自动化提取方法 ........................................................................ 153 5.1 Python Readability ................................................................................. 155 5.2 基于文本及符号密度的网页正文提取方法 ......................................... 158 5.3 GeneralNewsExtractor ............................................................................ 162 5.3.1 GeneralNewsExtractor 的安装和使用 ....................................... 162 5.3.2 GeneralNewsExtractor 的源码解读 ........................................... 165 本节小结 ................................................................................................ 175 本章小结 ......................................................................................................... 175 第6 章 Python 项目打包部署与定时调度 ........................................................... 176 6.1 如何判断项目是否需要部署 ................................................................ 176 6.2 爬虫部署平台Scrapyd .......................................................................... 179 6.2.1 Scrapyd 的安装和服务启动 ....................................................... 179 6.2.2 爬虫项目的打包和部署 ............................................................. 180 本节小结 ................................................................................................ 184 6.3 Scrapyd 源码深度剖析 .......................................................................... 185 6.4 项目打包与解包运行实战 .................................................................... 197 6.4.1 用Setuptools 打包项目 .............................................................. 197 6.4.2 运行EGG 包中的Python 项目 ................................................. 199 6.4.3 编码实现Python 项目打包 ....................................................... 201 本节小结 ................................................................................................ 203 X Python3 网络爬虫宝典 6.5 定时功能 ................................................................................................ 203 6.5.1 操作系统提供的定时功能 ......................................................... 203 6.5.2 编程语言实现的定时功能 ......................................................... 206 6.5.3 APScheduler ............................................................................... 209 本节小结 ................................................................................................ 212 6.6 实战:开发Python 项目管理平台Sailboat ......................................... 212 6.6.1 Sailboat 的模块规划和技术选型 ............................................... 212 6.6.2 Sailboat 的权限设计思路 ........................................................... 214 6.6.3 Sailboat 的数据结构设计 ........................................................... 215 6.6.4 Sailboat 基础结构的搭建 ........................................................... 218 6.6.5 Sailboat 用户注册和登录接口的编写 ....................................... 220 6.6.6 Sailboat 权限验证装饰器的编写 ............................................... 229 6.6.7 Sailboat 项目部署接口和文件操作对象的编写 ....................... 232 6.6.8 Sailboat 项目调度接口的编写 ................................................... 240 6.6.9 Sailboat 执行器的编写和日志的生成 ....................................... 243 6.6.10 Sailboat 定时调度功能的实现 ................................................. 248 6.6.11 Sailboat 异常监控和钉钉机器人通知功能的编写 ................. 249 本节小结 ................................................................................................ 258 6.7 分布式调度平台Crawlab 核心架构解析 ............................................. 259 实践题 ............................................................................................................. 262 本章小结 ......................................................................................................... 262 |