目 錄
前言
第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協(xié)議25
1.3.3 網絡爬蟲框架29
第2章 C#編程基礎31
2.1 C#語言概述31
2.1.1 C#與.NET框架31
2.1.2 開發(fā)環(huán)境33
2.1.3 語言生態(tài)37
2.2 數據和運算40
2.2.1 C#數據類型40
2.2.2 常用運算符45
2.3 流程控制50
2.3.1 分支結構51
2.3.2 循環(huán)結構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 深度優(yōu)先搜索167
7.1.2 廣度優(yōu)先搜索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 系統(tǒng)線程池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