第1章 Scrapy框架
1.1 关于Scrapy
1.1.1 Serapy简介
1.1.2 Scrapy安装
1.2 Scrapy基础
1.2.1 Scrapy测试流程
1.2.2 Scrapy开发流程
1.2.3 Scrapy框架架构
1.2.4 Request对象和Response对象
1.2.5 HTML页面解析
1.2.6 HTML页面泛解析
1.3 爬虫组件
1.3.1 基础爬虫
1.3.2 通用爬虫
1.4 中间件组件
1.4.1 爬虫中间件
1.4.2 下载中间件
1.4.3 随机UserAgent中间件
1.4.4 Selenium中间件
1.4.5 pyppeteer中间件
1.5 数据管道组件
1.5.1 自定义Pipeline
1.5.2 文件下载Pipeline
1.5.3 文件下载案例
1.6 数据导出器组件
1.6.1 内置数据导出器
1.6.2 自定义数据导出器
1.7 分布式Scrapy
1.7.1 分布式架构
1.7.2 分布式通信队列
1.7.3 分布式爬虫
1.7.4 分布式调度
1.7.5 分布式去重
1.7.6 自定义去重组件
1.7.7 基本开发流程
1.8 Scrapy参考手册
1.8.1 常用命令
1.8.2 常用配置项
1.9 案例:使用Scrapy获取当当网商品信息
1.9.1 项目需求
1.9.2 项目分析
1.9.3 编码实现
1.9.4 容器化部署
第2章 异步爬虫
2.1 异步I/O与协程
2.1.1 迭代器与生成器
2.1.2 yield from关键字
2.1.3 Python协程原理
2.2 asyncio异步框架
2.2.1 创建可等待对象
2.2.2 运行asyncio程序
2.2.3 asyncio结果回调
2.2.4 asyncio并发和多线程
2.3 异步请求和文件操作
2.3.1 aiohttp异步请求库
2.3.2 requests异步方案
2.3.3 aiofiles异步文件操作
2.4 异步数据库
2.4.1 MySQL异步读写
2.4.2 MongoDB异步读写
2.4.3 Redis异步读写
2.5 案例:全流程异步爬虫的运用
2.5.1 案例需求
2.5.2 案例分析
2.5.3 编码实现
第3章 pyppeteer
3.1 pyppeteer基础
3.1.1 pyppeteer简介
3.1.2 pyppeteer环境安装
3.2 pyppeteer的常用内部方法
3.2.1 浏览器启动器
3.2.2 页面常用操作
3.2.3 页面Cookie处理
3.2.4 页面节点选择器
3.2.5 键盘和鼠标操作
3.2.6 内嵌框处理
3.2.7 JavaScript操作
3.2.8 Request和Response
3.3 pyppeteer常用操作
3.3.1 启动项参数设置
3.3.2 识别特征处理
3.3.3 配置代理及认证
3.3.4 拦截请求和响应
3.4 案例:pyppeteer动态代理的切换
第4章 反爬虫
4.1 设备指纹
4.1.1 Canvas指纹
4.1.2 WebGL指纹
4.1.3 Font指纹
4.1.4 AudioContext指纹
4.2 滑动验证
4.2.1 滑动距离识别
4.2.2 轨迹生成算法
4.2.3 滑动验证示例
4.3 字体反爬虫
4.3.1 字体反爬虫原理
4.3.2 通用解决方案
4.3.3 字体反爬虫示例
4.4 CSS样式反爬虫
4.4.1 元素排序覆盖
4.4.2 雪碧图拼凑
4.4.3 选择器插入
4.5 动态渲染
4.5.1 Ajax动态加载信息
4.5.2 requests-html渲染
4.5.3 替Splash渲染方案
4.6 图片验证码
4.6.1 验证码生成及验证原理
4.6.2 Tesseract 4环境部署
4.6.3 二值化、去噪点和识别
4.6.4 Tesseract 4样本训练
4.7 IP限制
4.7.1 代理技术原理及发展现状
4.7.2 全新分布式家庭代理
4.7.3 零成本纯净测试IP
第5章 分布式爬虫系统的设计
5.1 消息系统的消息传递模式
5.1.1 发布-订阅模式
5.1.2 点对点模式
5.1.3 Redis发布-订阅框架
5.2 基于RabbitMQ中间件的设计
5.2.1 RabbitMQ基础
5.2.2 Docker部署RabbitMQ
5.2.3 RabbitMQ可视化管理
5.2.4 Python中使用RabbitMQ
5.3 基于Kafka中间件的设计
5.3.1 Kafka基础
5.3.2 docker部署Kafka集群
5.3.3 Kafka可视化管理
5.3.4 Python中使用Kafka
5.4 基于Celery分布式框架的设计
5.4.1 Celery基础
5.4.2 Celery的使用
5.4.3 Celery可视化管理
5.4.4 路由任务与定时任务
第6章 编码及加密
6.1 编码及转换
6.1.1 编码与乱码原理
6.1.2 URL编码转换
6.1.3 Bytes对象
6.1.4 Base64编码
6.2 加密与解密
6.2.1 概述
6.2.2 DES与3DES
6.2.3 AES加密
6.2.4 RSA加密及签名
6.2.5 散列函数
第7章 JavaScript安全分析
7.1 JavaSeript分析基础
7.1.1 浏览器开发者工具
7.1.2 断点及动态调试
7.1.3 加密库CryptoJS
7.1.4 Python中运行JavaScript
7.2 JavaScript入口定位
7.2.1 全局搜索
7.2.2 事件记录器
7
展开