图书目录

目录

第1章Scrapy框架

1.1关于Scrapy

1.1.1Scrapy简介

1.1.2Scrapy安装

1.2Scrapy基础

1.2.1Scrapy测试流程

1.2.2Scrapy开发流程

1.2.3Scrapy框架架构

1.2.4Request对象和Response对象

1.2.5HTML页面解析

1.2.6HTML页面泛解析

1.3爬虫组件

1.3.1基础爬虫

1.3.2通用爬虫

1.4中间件组件

1.4.1爬虫中间件

1.4.2下载中间件

1.4.3随机UserAgent中间件

1.4.4Selenium中间件

1.4.5pyppeteer中间件

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.8Scrapy参考手册

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.2yield from关键字

2.1.3Python协程原理

2.2asyncio异步框架

2.2.1创建可等待对象

2.2.2运行asyncio程序

2.2.3asyncio结果回调

2.2.4asyncio并发和多线程

2.3异步请求和文件操作

2.3.1aiohttp异步请求库

2.3.2requests异步方案

2.3.3aiofiles异步文件操作

2.4异步数据库

2.4.1MySQL异步读写

2.4.2MongoDB异步读写

2.4.3Redis异步读写

2.5案例:  全流程异步爬虫的运用

2.5.1案例需求

2.5.2案例分析

2.5.3编码实现

第3章pyppeteer

3.1pyppeteer基础

3.1.1pyppeteer简介

3.1.2pyppeteer环境安装

3.2pyppeteer的常用内部方法

3.2.1浏览器启动器

3.2.2页面常用操作

3.2.3页面Cookie处理

3.2.4页面节点选择器

3.2.5键盘和鼠标操作

3.2.6内嵌框处理

3.2.7JavaScript操作

3.2.8Request和Response

3.3pyppeteer常用操作

3.3.1启动项参数设置

3.3.2识别特征处理

3.3.3配置代理及认证

3.3.4拦截请求和响应

3.4案例:  pyppeteer动态代理的切换

第4章反爬虫

4.1设备指纹

4.1.1Canvas指纹

4.1.2WebGL指纹

4.1.3Font指纹

4.1.4AudioContext指纹

4.2滑动验证

4.2.1滑动距离识别

4.2.2轨迹生成算法

4.2.3滑动验证示例

4.3字体反爬虫

4.3.1字体反爬虫原理

4.3.2通用解决方案

4.3.3字体反爬虫示例

4.4CSS样式反爬虫

4.4.1元素排序覆盖

4.4.2雪碧图拼凑

4.4.3选择器插入

4.5动态渲染

4.5.1Ajax动态加载信息

4.5.2requestshtml渲染

4.5.3替Splash渲染方案

4.6图片验证码

4.6.1验证码生成及验证原理

4.6.2Tesseract 4环境部署

4.6.3二值化、去噪点和识别

4.6.4Tesseract 4样本训练

4.7IP限制

4.7.1代理技术原理及发展现状

4.7.2全新分布式家庭代理

4.7.3零成本纯净测试IP

第5章分布式爬虫系统的设计

5.1消息系统的消息传递模式

5.1.1发布订阅模式

5.1.2点对点模式

5.1.3Redis发布订阅框架

5.2基于RabbitMQ中间件的设计

5.2.1RabbitMQ基础

5.2.2Docker部署RabbitMQ

5.2.3RabbitMQ可视化管理

5.2.4Python中使用RabbitMQ

5.3基于Kafka中间件的设计

5.3.1Kafka基础

5.3.2docker部署Kafka集群

5.3.3Kafka可视化管理

5.3.4Python中使用Kafka

5.4基于Celery分布式框架的设计

5.4.1Celery基础

5.4.2Celery的使用

5.4.3Celery可视化管理

5.4.4路由任务与定时任务

第6章编码及加密

6.1编码及转换

6.1.1编码与乱码原理

6.1.2URL编码转换

6.1.3Bytes对象

6.1.4Base64编码

6.2加密与解密

6.2.1概述

6.2.2DES与3DES

6.2.3AES加密

6.2.4RSA加密及签名

6.2.5散列函数

第7章JavaScript安全分析

7.1JavaScript分析基础

7.1.1浏览器开发者工具

7.1.2断点及动态调试

7.1.3加密库CryptoJS

7.1.4Python中运行JavaScript

7.2JavaScript入口定位 

7.2.1全局搜索

7.2.2事件记录器

7.2.3油猴插件Hook

7.3JavaScript防护

7.3.1域名锁定

7.3.2源码校验

7.3.3防格式化

7.3.4鼠标轨迹检测

7.3.5控制面板检测

7.3.6浏览器特征检测

7.3.7浏览器指纹检测

7.3.8debugger反调试

7.4AST基础

7.4.1抽象语法树

7.4.2基于AST混淆策略 

7.4.3Ob混淆工具

7.5Babel插件开发

7.5.1Babel及模块

7.5.2解析与生成

7.5.3AST转换

7.5.4节点类型

7.5.5节点与路径

7.5.6作用域管理

7.6案例:  Ob混淆还原

7.6.1编码还原

7.6.2算术表达式还原

7.6.3长数组还原

7.6.4控制流还原

7.6.5逗号表达式还原

7.6.6一些细节处理

7.7独立源码运行

7.7.1运行环境监测

7.7.2构建window对象

7.7.3调用JavaScript代码

7.7.4案例:  调用JavaScript源码实现接口请求

第8章搜索引擎技术

8.1搜索引擎概述

8.1.1概述

8.1.2系统架构

8.1.3网络爬虫

8.1.4倒排索引

8.2Elasticsearch引擎

8.2.1Elasticsearch简介

8.2.2Elasticsearch集群部署

8.2.3索引管理

8.2.4插入文档

8.2.5删除文档

8.2.6更新文档

8.2.7文档批处理

8.2.8文档搜索

8.2.9Python操作Elasticsearch

第9章项目:  创建搜索引擎系统

9.1项目简介

9.1.1项目概述

9.1.2环境准备

9.2搜索引擎爬虫

9.2.1分布式通用爬虫

9.2.2修改配置试运行

9.2.3保存数据到Elasticsearch

9.2.4布隆过滤器去重

9.3前端交互

9.3.1前端页面

9.3.2后端服务

9.3.3模板渲染

9.4项目部署

9.4.1基础服务部署

9.4.2爬虫部署

附录A参考资源网址