內容簡介
本書較為全面地介紹了定向爬蟲的開發過程、各種反爬蟲機制的破解方法和爬蟲開發的相關技巧。全書共13章,包括緒論、Python基礎、正則表達式與檔案操作、簡單的網頁爬蟲開發、高性能HTML內容解析、Python與資料庫、異步載入與請求頭、模擬登錄與驗證碼、抓包與中間人爬蟲、Android原生App爬蟲、Scrapy、Scrapy套用、爬蟲開發中的法律和道德問題等。除第 1、12、13章外的其他章末尾都有動手實踐,以幫助讀者鞏固本章和前面章節所學的內容。針對書中的疑難內容,還配有視頻講解,以便更好地演示相關操作。
圖書目錄
第 1章 緒論 1
1.1 爬蟲 2
1.2 爬蟲可以做什麼 2
1.2.1 收集數據 2
1.2.2 盡職調查 3
1.2.3 刷流量和秒殺 3
1.3 爬蟲開發技術 4
第 2章 Python基礎 5
2.1 Python的安裝和運行 6
2.1.1 在Windows中安裝Python 6
2.1.2 在Mac OS中安裝Python 7
2.1.3 在Linux中安裝Python 8
2.2 Python開發環境 8
2.2.1 PyCharm介紹與安裝 8
2.2.2 運行代碼 9
2.3 Python的數據結構和控制結構 12
2.3.1 整數、浮點數和變數 12
2.3.2 字元串、列表、元組 13
2.3.3 數據的讀取 14
2.3.4 字典與集合 16
2.3.5 條件語句 17
2.3.6 for循環與while循環 19
2.4 函式與類 21
2.4.1 函式 21
2.4.2 類與面向對象編程 28
2.5 階段案例——猜數遊戲 32
2.5.1 需求分析 32
2.5.2 核心代碼構建 33
2.5.3 調試與運行 33
2.6 本章小結 34
2.7 動手實踐 34
第3章 正則表達式與檔案操作 35
3.1 正則表達式 36
3.1.1 正則表達式的基本符號 36
3.1.2 在Python中使用正則表達式 38
3.1.3 正則表達式提取技巧 41
3.2 Python檔案操作 44
3.2.1 使用Python讀/寫文本檔案 44
3.2.2 使用Python讀/寫CSV檔案 46
3.3 階段案例——半自動爬蟲開發 49
3.3.1 需求分析 49
3.3.2 核心代碼構建 50
3.3.3 調試與運行 51
3.4 本章小結 54
3.5 動手實踐 54
第4章 簡單的網頁爬蟲開發 55
4.1 使用Python獲取網頁原始碼 56
4.1.1 Python的第三方庫 56
4.1.2 requests介紹與安裝 56
4.1.3 使用requests獲取網頁原始碼 57
4.1.4 結合requests與正則表達式 59
4.2 多執行緒爬蟲 60
4.2.1 多進程庫(multiprocessing) 60
4.2.2 開發多執行緒爬蟲 61
4.3 爬蟲的常見搜尋算法 62
4.3.1 深度優先搜尋 62
4.3.2 廣度優先搜尋 63
4.3.3 爬蟲搜尋算法的選擇 64
4.4 階段案例——小說網站爬蟲開發 64
4.4.1 需求分析 64
4.4.2 核心代碼構建 65
4.4.3 調試與運行 68
4.5 本章小結 68
4.6 動手實踐 68
第5章 高性能HTML內容解析 69
5.1 HTML基礎 70
5.2 XPath 71
5.2.1 XPath的介紹 71
5.2.2 lxml的安裝 71
5.2.3 XPath語法講解 73
5.2.4 使用Google Chrome瀏覽器輔助構造XPath 77
5.3 Beautiful Soup4 81
5.3.1 BS4的安裝 81
5.3.2 BS4語法講解 82
5.4 階段案例——大麥網演出爬蟲 85
5.4.1 需求分析 85
5.4.2 核心代碼構建 85
5.4.3 調試與運行 86
5.5 本章小結 87
5.6 動手實踐 87
第6章 Python與資料庫 88
6.1 MongoDB 89
6.1.1 MongoDB的安裝 89
6.1.2 PyMongo的安裝與使用 94
6.1.3 使用RoboMongo執行MongoDB命令 101
6.2 Redis 102
6.2.1 環境搭建 102
6.2.2 Redis互動環境的使用 103
6.2.3 Redis-py 104
6.3 MongoDB的最佳化建議 105
6.3.1 少讀少寫少更新 105
6.3.2 能用Redis不用MongoDB 106
6.4 階段案例 107
6.4.1 需求分析 107
6.4.2 核心代碼構建 107
6.4.3 調試與運行 108
6.5 本章小結 108
6.6 動手實踐 108
第7章 異步載入與請求頭 109
7.1 異步載入 110
7.1.1 AJAX技術介紹 110
7.1.2 JSON介紹與套用 110
7.1.3 異步GET與POST請求 111
7.1.4 特殊的異步載入 113
7.1.5 多次請求的異步載入 114
7.1.6 基於異步載入的簡單登錄 117
7.2 請求頭(Headers) 118
7.2.1 請求頭的作用 118
7.2.2 偽造請求頭 119
7.3 模擬瀏覽器 122
7.3.1 Selenium介紹 123
7.3.2 Selenium安裝 124
7.3.3 Selenium的使用 124
7.4 階段案例 128
7.4.1 需求分析 128
7.4.2 核心代碼構建 128
7.4.3 調試與運行 130
7.5 本章小結 131
7.6 動手實踐 131
第8章 模擬登錄與驗證碼 132
8.1 模擬登錄 133
8.1.1 使用Selenium模擬登錄 133
8.1.2 使用Cookies登錄 135
8.1.3 模擬表單登錄 137
8.2 驗證碼 139
8.2.1 肉眼打碼 139
8.2.2 自動打碼 141
8.3 階段案例——自動登錄果殼網 144
8.3.1 需求分析 144
8.3.2 核心代碼構建 145
8.3.3 運行與調試 146
8.4 本章小結 147
8.5 動手實踐 147
第9章 抓包與中間人爬蟲 148
9.1 數據抓包 149
9.1.1 Charles的介紹和使用 149
9.1.2 App爬蟲和小程式爬蟲 156
9.2 中間人爬蟲 163
9.2.1 mitmproxy的介紹和安裝 163
9.2.2 mitmproxy的使用 164
9.2.3 使用Python定製mitmproxy 165
9.3 階段案例——Keep熱門 170
9.3.1 需求分析 170
9.3.2 核心代碼構建 170
9.3.3 調試運行 172
9.4 本章小結 172
9.5 動手實踐 172
第 10章 Android原生App爬蟲 173
10.1 實現原理 174
10.1.1 環境搭建 175
10.1.2 使用Python操縱手機 178
10.1.3 選擇器 180
10.1.4 操作 181
10.2 綜合套用 188
10.2.1 單設備套用 188
10.2.2 多設備套用(群控) 191
10.3 階段案例——BOSS直聘爬蟲 196
10.3.1 需求分析 196
10.3.2 核心代碼構建 196
10.3.3 調試與運行 197
10.4 本章小結 197
10.5 動手實踐 198
第 11章 Scrapy 199
11.1 Scrapy的安裝 200
11.1.1 在Windows下安裝Scrapy 200
11.1.2 在Linux下安裝Scrapy 202
11.1.3 在Mac OS下安裝Scrapy 202
11.2 Scrapy的使用 203
11.2.1 創建項目 203
11.2.2 在Scrapy中使用XPath 207
11.3 Scrapy與MongoDB 213
11.3.1 items和pipelines的設定 213
11.3.2 在Scrapy中使用MongoDB 215
11.4 Scrapy與Redis 218
11.4.1 Scrapy_redis的安裝和使用 218
11.4.2 使用Redis快取網頁並自動去重 218
11.5 階段案例——部落格爬蟲 220
11.5.1 需求分析 220
11.5.2 核心代碼構建 221
11.5.3 調試與運行 226
11.6 本章小結 228
11.7 動手實踐 228
第 12章 Scrapy套用 229
12.1 中間件(Middleware) 230
12.1.1 下載器中間件 230
12.1.2 爬蟲中間件 242
12.2 爬蟲的部署 246
12.2.1 Scrapyd介紹與使用 246
12.2.2 許可權管理 253
12.3 分散式架構 258
12.3.1 分散式架構介紹 258
12.3.2 如何選擇Master 259
12.4 階段案例 259
12.5 本章小結 259
第 13章 爬蟲開發中的法律和道德問題 260
13.1 法律問題 261
13.1.1 數據採集的法律問題 261
13.1.2 數據的使用 261
13.1.3 註冊及登錄可能導致的法律問題 261
13.1.4 數據存儲 261
13.1.5 內幕交易 261
13.2 道德協定 262
13.2.1 robots.txt協定 262
13.2.2 爬取頻率 262
13.2.3 不要開源爬蟲的原始碼 262
13.3 本章小結 262