目 录
前言
第1章 网络爬虫概述1
1.1 网络基础1
1.1.1 网络的基本概念1
1.1.2 HTTP6
1.1.3 会话机制11
1.2 网页知识14
1.2.1 HTML14
1.2.2 CSS17
1.2.3 JavaScript20
1.3 网络爬虫的原理22
1.3.1 网络爬虫概述22
1.3.2 Robots协议25
1.3.3 网络爬虫框架29
第2章 C#编程基础31
2.1 C#语言概述31
2.1.1 C#与.NET框架31
2.1.2 开发环境33
2.1.3 语言生态37
2.2 数据和运算40
2.2.1 C#数据类型40
2.2.2 常用运算符45
2.3 流程控制50
2.3.1 分支结构51
2.3.2 循环结构54
2.4 常用数据结构56
2.4.1 字符串56
2.4.2 数组60
2.4.3 列表62
2.4.4 字典65
第3章 网络资源下载70
3.1 同步下载70
3.1.1 网页下载70
3.1.2 编码检测72
3.1.3 参数设置76
3.2 异步下载83
3.2.1 实现方式83
3.2.2 性能分析85
3.3 通用资源下载器 86
3.3.1 下载器的设计86
3.3.2 下载器的实现88
第4章 网页数据抽取95
4.1 正则表达式抽取95
4.1.1 正则表达式简介95
4.1.2 使用Regex类97
4.2 XPath抽取100
4.2.1 XPath简介100
4.2.2 使用HtmlAgilityPack103
4.3 HTML解析器107
4.4 综合实例:新闻资讯爬虫110
4.4.1 爬虫设计110
4.4.2 爬虫实现111
第5章 其他数据抽取119
5.1 XML数据抽取119
5.1.1 XML简介119
5.1.2 使用System.Xml120
5.2 JSON数据抽取123
5.2.1 JSON简介123
5.2.2 使用Newtonsoft.Json125
5.3 综合实例1:天气爬虫128
5.3.1 问题描述与分析128
5.3.2 爬虫设计131
5.3.3 爬虫实现131
5.4 综合实例2:音乐爬虫136
5.4.1 问题描述136
5.4.2 逆向分析138
5.4.3 爬虫设计141
5.4.4 爬虫实现143
第6章 数据存储150
6.1 数据的维度150
6.2 文件存储151
6.2.1 低维数据存储151
6.2.2 高维数据存储154
6.3 数据库存储158
6.3.1 MySQL的安装和配置158
6.3.2 将数据存入MySQL162
第7章 爬虫控制167
7.1 爬虫搜索方式167
7.1.1 深度优先搜索167
7.1.2 广度优先搜索171
7.1.3 性能分析172
7.2 爬虫控制器175
7.2.1 控制器设计175
7.2.2 控制器的实现176
7.2.3 实时控制器179
7.3 综合实例:站内文章爬虫183
7.3.1 爬虫设计183
7.3.2 爬虫实现185
7.3.3 爬虫测试186
第8章 多线程爬虫189
8.1 多线程机制189
8.1.1 Thread对象189
8.1.2 BackgroundWorker控件192
8.1.3 系统线程池194
8.2 多线程爬虫197
8.2.1 实现方法197
8.2.2 性能对比199
8.3 自定义线程池202
8.3.1 线程池设计202
8.3.2 线程池实现203
8.3.3 性能测试206
8.4 多线程爬虫控制器207
8.4.1 多线程控制器实现207
8.4.2 访问序列分析210
第9章 使用代理213
9.1 代理机制213
9.1.1 使用WebProxy对象213
9.1.2 使用全局代理215
9.2 自定义代理池217
9.2.1 代理池设计217
9.2.2 代理池实现218
第10章 模拟浏览器225
10.1 浏览器的工作原理225
10.1.1 网页解析过程225
10.1.2 常见的浏览器内核226
10.2 使用浏览器内核226
10.2.1 Trident内核226
10.2.2 Gecko内核231
10.3 综合实例:网页翻译爬虫240
10.3.1 问题描述240
10.3.2 爬虫设计241
10.3.3 爬虫实现242
10.3.4 算法改进247
第11章 可视化模板配置250
11.1 可视化模板配置方法250
11.1.1 抽取原理250
11.1.2 模板表示253
11.1.3 可视化配置254
11.2 综合实例:可视化网页文章
爬虫259
11.2.1 爬虫设计259
11.2.2 爬虫实现260
参考文献264