Python爬蟲技術——深入理解原理、技術與開發

《Python爬蟲技術——深入理解原理、技術與開發》是清華大學出版社出版的一本圖書。

基本介紹

  • 書名:Python爬蟲技術——深入理解原理、技術與開發
  • 作者:李寧
  • 出版社:清華大學出版社
  • 出版時間:2020年1月1日
圖書內容,圖書目錄,

圖書內容

本書從實戰角度系統講解 Python爬蟲的核心知識點,並通過大量的真實項目讓讀者熟練掌握 Python爬蟲技術。本書用 20多個實戰案例,完美演繹了使用各種技術編寫 Python爬蟲的方式,讀者可以任意組合這些技術,完成非常複雜的爬蟲套用。 全書共 20章,分為 5篇。第 1篇基礎知識(第 1、2章),主要包括 Python運行環境的搭建、 HTTP基礎、網頁基礎( HTML、CSS、JavaScript等)、爬蟲的基本原理、 Session與 Cookie。第 2篇網路庫(匪頌愉第 3~ 6章),主要包括網路庫 urllib、urllib3、requests和 Twisted的核心使用方法,如傳送 HTTP請求、處理逾時、設定 HTTP請求頭、搭建和使用代理、解析連結、 Robots協定等。
Python爬蟲技術——深入理解原理、技術與開發
定價:89元
印次:1-2
ISBN:9787302535683

圖書目錄

第1篇基礎剃求連知識
第1章開發環境配置.2
1.1安裝官方的Python運行環境.2
1.2 配置PATH環境變數.5
1.3安裝AnacondaPython開朵多膠悼發環境.6
1.4安裝PyCharm.7
1.5配置PyCharm.8
1.6 小結.10
第體糠槳 2章爬蟲基礎.11
2.1 HTTP基礎 11
2.1.1 URI和 URL 11
2.1.2 超文本 12
2.1.3 HTTP與 HTTPS . 12
2.1.4 HTTP的請求過程 . 15
2.1.5 請求 17
2.1.6 回響 20
2.2 網頁基礎 23
2.2.1 HTML . 23
2.2.2 CSS 24
2.2.3 CSS選擇器. 25
2.2.4 JavaScript . 27
2.3 爬蟲的基本原理 27
2.3.1 爬蟲的分類 . 27
2.3.2 爬蟲抓取數據的方式和手段 . 28
2.4 Session與 Cookie . 28
2.4.1 靜態頁紋再面和動態頁面 . 29
2.4.2 無狀態 HTTP與 Cookie 30
2.4.3 利用喇腿元 Session和 Cookie保持狀態 . 30
2.4.4 查看網站的幾蜜宙永 Cookie 31
2.4.5 HTTP狀態何時會失效 32
CONTENTS 目 錄
2.5 實戰案例:抓取所有的網路資源 . 33
2.6 實戰案例:抓取部落格文章列表 . 37
2.7 小結 . 40
第 2篇網路庫
第 3章網路庫 urllib . 42
3.1 urllib簡介 42
3.2 傳送請求與獲得回響 . 43
3.2.1 用 urlopen函式傳送 HTTP GET請求 43
3.2.2 用 urlopen函式傳送 HTTP POST請求 44
3.2.3 請求逾時 . 45
3.2.4 設定 HTTP請求頭 46
3.2.5 設定中文 HTTP請求頭 . 48
3.2.6 請求基礎驗證頁面 . 50
3.2.7 搭建代理與使用代理 . 54
3.2.8 讀取和設定 Cookie 56
3.3 異常處理 60
3.3.1 URLError 60
3.3.2 HTTPError 61
3.4 解析連結 62
3.4.1 拆分與合併 URL(urlparse與 urlunparse) . 62
3.4.2 另一種拆分與合併 URL的方式(urlsplit與 urlunsplit) 63
3.4.3 連線 URL(urljoin) . 65
3.4.4 URL編碼(urlencode). 65
3.4.5 編碼與解碼(quote與 unquote). 66
3.4.6 參數轉換(parse_qs與 parse_qsl) 66
3.5 Robots協定 67
3.5.1 Robots協定簡介 . 67
3.5.2 分析 Robots協定 68
3.6 小結 . 69
第 4章網路庫 urllib3 . 70
4.1 urllib3簡介 70
4.2 urllib3模組 70
4.3 傳送 HTTP GET請求 71
4.4 傳送 HTTP POST請求 72
4.5 HTTP請求頭 74
4.6 HTTP回響頭 76
4.7 上傳檔案 76
4.8 逾時 . 78
4.9 小結 . 79
第 5章網路庫 requests . 80
5.1 基本用法 80
5.1.1 requests的 HelloWorld 81
5.1.2 GET請求 81
5.1.3 添加 HTTP請求頭 82
5.1.4 抓取二進制數據 83
5.1.5 POST請求 84
5.1.6 回響數據 . 85
5.2 高級用法 87
5.2.1 上傳檔案 . 88
5.2.2 處理 Cookie 89
5.2.3 使用同一個會話(Session) 90
5.2.4 SSL證書驗證 91
5.2.5 使用代理 . 94
5.2.6 逾時 95
5.2.7 身份驗證 . 97
5.2.8 將請求打包 . 97
5.3 小結 . 98
第 6章 Twisted網路框架 99
6.1 異步編程模型 . 99
6.2 Reactor(反應堆)模式 . 101
6.3 HelloWorld,Twisted框架 101
6.4 用 Twisted實現時間戳客戶端 103
6.5 用 Twisted實現時間戳服務端 104
6.6 小結 . 105
第 3篇解析庫
第 7章正則表達式 . 108
7.1 使用正則表達式 108
7.1.1 使用 match方法匹配字元串 108
7.1.2 使用 search方法在一個字元串中查找模式 . 109
7.1.3 匹配多個字元串 110
7.1.4 匹配任何單個字元 . 111
7.1.5 使用字元集 . 112
7.1.6 重複、可選和特殊字元 114
7.1.7 分組 117
7.1.8 匹配字元串的起始和結尾以及單詞邊界 . 118
7.1.9 使用 findall和 finditer查找每一次出現的位置 . 120
7.1.10 用 sub和 subn搜尋與替換. 121
7.1.11 使用 split分隔字元串 122
7.2 一些常用的正則表達式 . 123
7.3 項目實戰:抓取小說目錄和全文 . 124
7.4 項目實戰:抓取貓眼電影 Top100榜單 128
7.5 項目實戰:抓取糗事百科網的段子 133
7.6 小結 . 136
第 8章 lxml與 XPath . 137
8.1 lxml基礎 137
8.1.1 安裝 lxml 137
8.1.2 操作 XML . 138
8.1.3 操作 HTML . 140
8.2 XPath . 141
8.2.1 XPath概述 141
8.2.2 使用 XPath 141
8.2.3 選取所有節點 143
8.2.4 選取子節點 . 145
8.2.5 選取父節點 . 146
8.2.6 屬性匹配與獲取 146
8.2.7 多屬性匹配 . 147
8.2.8 按序選擇節點 148
8.2.9 節點軸選擇 . 149
8.2.10 在 Chrome中自動獲得 XPath代碼 151
8.2.11 使用 Chrome驗證 XPath . 153
8.3 項目實戰:抓取豆瓣 Top250圖書榜單 154
8.4 項目實戰:抓取起點中文網的小說信息 . 158
8.5 小結 . 161
第 9章 Beautiful Soup庫. 162
9.1 Beautiful Soup簡介 162
9.2 Beautiful Soup基礎 162
9.2.1 安裝 Beautiful Soup 163
9.2.2 選擇解析器 . 164
9.2.3 編寫第一個 Beautiful Soup程式 164
9.3 節點選擇器 . 165
9.3.1 選擇節點 . 165
9.3.2 嵌套選擇節點 167
9.3.3 選擇子節點 . 168
9.3.4 選擇父節點 . 171
9.3.5 選擇兄弟節點 172
9.4 方法選擇器 . 174
9.4.1 find_all方法 . 174
9.4.2 find方法 . 177
9.5 CSS選擇器 . 178
9.5.1 基本用法 . 179
9.5.2 嵌套選擇節點 180
9.5.3 獲取屬性值與文本 . 181
9.5.4 通過瀏覽器獲取 CSS選擇器代碼. 182
9.6 實戰案例:抓取租房信息 184
9.7 實戰案例:抓取酷狗網路紅歌榜 . 188
9.8 小結 . 191
第 10章 pyquery庫 . 192
10.1 pyquery簡介 . 192
10.2 pyquery基礎 . 192
10.2.1 安裝 pyquery . 193
10.2.2 pyquery的基本用法 193
10.3 CSS選擇器 . 194
10.4 查找節點. 196
10.4.1 查找子節點 . 196
10.4.2 查找父節點 . 197
10.4.3 查找兄弟節點 198
10.4.4 獲取節點信息 199
10.5 修改節點. 203
10.5.1 添加和移除節點的樣式(addClass和 removeClass). 204
10.5.2 修改節點屬性和文本內容(attr、removeAttr、text和 html) 205
10.5.3 刪除節點(remove) . 207
10.6 偽類選擇器 . 208
10.7 項目實戰:抓取噹噹圖書排行榜 210
10.8 項目實戰:抓取京東商城手機銷售排行榜 213
10.9 小結 219
第 4篇數據存儲
第 11章檔案存儲 222
11.1 打開檔案 . 222
11.2 操作檔案的基本方法 . 224
11.2.1 讀檔案和寫檔案 224
11.2.2 讀行和寫行 . 226
11.3 使用 FileInput對象讀取檔案 . 227
11.4 處理 XML格式的數據 . 228
11.4.1 讀取與搜尋 XML檔案 . 228
11.4.2 字典轉換為 XML字元串 . 229
11.4.3 XML字元串轉換為字典 231
11.5 處理 JSON格式的數據 232
11.5.1 JSON字元串與字典互相轉換 233
11.5.2 將 JSON字元串轉換為類實例 234
11.5.3 將類實例轉換為 JSON字元串 236
11.5.4 類實例列表與 JSON字元串互相轉換 236
11.6 將 JSON字元串轉換為 XML字元串 237
11.7 CSV檔案存儲 . 238
11.7.1 寫入 CSV檔案 238
11.7.2 讀取 CSV檔案 241
11.8 小結 241
第 12章資料庫存儲. 242
12.1 SQLite資料庫 . 242
12.1.1 管理 SQLite資料庫 . 243
12.1.2 用 Python操作 SQLite資料庫 . 245
12.2 MySQL資料庫 . 247
12.2.1 安裝 MySQL . 247
12.2.2 在 Python中使用 MySQL 250
12.3.1 NoSQL簡介 253
12.3.2 MongoDB資料庫 . 253
12.3.3 pymongo模組 . 255
12.4 項目實戰:抓取豆瓣音樂排行榜 256
12.5 項目實戰:抓取豆瓣電影排行榜 260
12.6 小結 264
第 5篇爬蟲高級套用
第 13章抓取異步數據 . 266
13.1 異步載入與 AJAX . 266
13.2 基本原理. 267
13.3 逆向工程. 270
13.4 提取結果. 274
13.5 項目實戰:支持搜尋功能的圖片爬蟲 . 274
13.6 項目實戰:抓取京東圖書評價 . 279
13.7 小結 284
第 14章可見即可爬:Selenium 285
14.1 安裝 Selenium . 286
14.2 安裝 WebDriver 286
14.2.1 安裝 ChromeDriver 287
14.2.2 裝 Edge WebDriver 288
14.2.3 安裝其他瀏覽器的 WebDriver 289
14.3 Selenium的基本使用方法 . 289
14.4 查找節點. 293
14.4.1 查找單個節點 293
14.4.2 查找多個節點 295
14.5 節點互動. 297
14.6 動作鏈 298
14.7 執行 JavaScript代碼 . 301
14.8 獲取節點信息 302
14.9 管理 Cookies . 303
14.10 改變節點的屬性值 . 304
14.11 項目實戰:抓取 QQ空間說說的內容 . 306
14.12 小結 308
第 15章基於 Splash的爬蟲 . 309
15.1 Splash基礎 . 309
15.1.1 Splash功能簡介 309
15.1.2 安裝 Docker 310
15.1.3 安裝 Splash . 310
15.2 Splash Lua腳本 312
15.2.1 第一個 Lua腳本 312
15.2.2 異步處理 . 313
15.2.3 Splash對象屬性 314
15.2.4 go方法 . 318
15.2.5 wait方法 . 319
15.2.6 jsfunc方法 320
15.2.7 evaljs方法 320
15.2.8 runjs方法 . 320
15.2.9 autoload方法 321
15.2.10 call_later方法 . 322
15.2.11 http_get方法 . 323
15.2.12 http_post方法 . 324
15.2.13 set_content方法 325
15.2.14 html方法 325
15.2.15 png方法 326
15.2.16 jpeg方法 . 326
15.2.17 har方法 326
15.2.18 其他方法 . 327
15.3 使用 CSS選擇器 . 331
15.3.1 select方法 331
15.3.2 select_all方法 . 332
15.4 模擬滑鼠和鍵盤的動作 333
15.5 Splash HTTP API 334
15.6 項目實戰:使用 Splash Lua抓取京東搜尋結果 . 338
15.7 小結 340
第 16章抓取移動 App的數據 . 341
16.1 使用 Charles . 341
16.1.1 抓取 HTTP數據包 . 342
16.1.2 安裝 PC端證書 . 344
16.1.3 在手機端安裝證書 . 345
16.1.4 監聽 HTTPS數據包 . 346
16.2 使用 mitmproxy 348
16.2.1 安裝 mitmproxy. 348
16.2.2 在 PC端安裝 mitmproxy證書 349
16.2.3 在移動端安裝 mitmproxy證書. 352
16.2.4 mitmproxy有哪些功能 353
16.2.5 設定手機的代理 353
16.2.6 用 mitmproxy監聽 App的請求與回響數據 . 354
16.2.7 使用 mitmproxy編輯請求信息. 356
16.2.8 mitmdump與 Python對接 . 357
16.2.9 使用 mitmweb監聽請求與回響 361
16.3 項目實戰:實時抓取“得到” App線上課程 363
16.4 小結 367
第 17章使用 Appium在移動端抓取數據 . 368
17.1 安裝 Appium . 368
17.1.1 安裝 Appium桌面端 368
17.1.2 配置 Android開發環境 370
17.1.3 配置 iOS開發環境 371
17.2 Appium的基本使用方法 . 372
17.2.1 啟動 Appium服務 . 372
17.2.2 查找 Android App的 Package和入口 Activity. 374
17.2.3 控制 App . 376
17.3 使用 Python控制手機 App 379
17.4 AppiumPythonClient API. 380
17.4.1 初始化(Remote類) 380
17.4.2 查找元素 . 381
17.4.3 單擊元素 . 381
17.4.4 螢幕拖動 . 382
17.4.5 螢幕滑動 . 382
17.4.6 拖曳操作 . 383
17.4.7 文本輸入 . 383
17.4.8 動作鏈 383
17.5 項目實戰:利用 Appium抓取微信朋友圈信息 384
17.6 小結 388
第 18章多執行緒和多進程爬蟲 389
18.1 執行緒與進程 . 389
18.1.1 進程 389
18.1.2 執行緒 390
18.2 Python與執行緒 . 390
18.2.1 使用單執行緒執行程式 . 390
18.2.2 使用多執行緒執行程式 . 391
18.2.3 為執行緒函式傳遞參數 . 393
18.2.4 執行緒和鎖 . 394
18.3 高級執行緒模組(threading) . 395
18.3.1 Thread類與執行緒函式 . 395
18.3.2 Thread類與執行緒對象 . 396
18.3.3 從 Thread類繼承 . 398
18.4 執行緒同步. 399
18.4.1 執行緒鎖 400
18.4.2 信號量 402
18.5 生產者—消費者問題與 queue模組 405
18.6 多進程 407
18.7 項目實戰:抓取豆瓣音樂 Top250排行榜(多執行緒版) 408
18.8 項目實戰:抓取豆瓣音樂 Top250排行榜(多進程版) 411
18.9 小結 412
第 19章網路爬蟲框架:Scrapy 413
19.1 Scrapy基礎知識 . 413
19.1.1 Scrapy簡介 . 413
19.1.2 Scrapy安裝 . 414
19.1.3 Scrapy Shell抓取 Web資源 . 415
19.2 用 Scrapy編寫網路爬蟲 417
19.2.1 創建和使用 Scrapy工程 417
19.2.2 在 PyCharm中使用 Scrapy 419
19.2.3 在 PyCharm中使用擴展工具運行 Scrapy程式 . 421
19.2.4 使用 Scrapy抓取數據,並通過 XPath指定解析規則 423
19.2.5 將抓取到的數據保存為多種格式的檔案 424
19.2.6 使用 ItemLoader保存單條抓取的數據 426
19.2.7 使用 ItemLoader保存多條抓取的數據 428
19.2.8 抓取多個 URL . 430
19.3 Scrapy的高級套用 431
19.3.1 處理登錄頁面 431
19.3.2 處理帶隱藏文本框的登錄頁面 . 434
19.3.3 通過 API抓取天氣預報數據 436
19.3.4 從 CSV格式轉換到 JSON格式 443
19.3.5 下載器中間件 447
19.3.6 爬蟲中間件 . 452
19.3.7 Item管道 455
19.3.8 通用爬蟲 . 465
19.4 小結 474
第 20章綜合爬蟲項目:可視化爬蟲 475
20.1 項目簡介. 475
20.2 主界面設計和實現 . 477
20.3 獲取商品頁數和每頁商品數 . 478
20.4 並發抓取商品列表 . 479
20.5 資料庫操作類 481
20.6 情感分析. 484
20.7 抓取和分析商品評論數據 485
20.8 可視化評論數據 486
20.9 小結 488
第 2篇網路庫
第 3章網路庫 urllib . 42
3.1 urllib簡介 42
3.2 傳送請求與獲得回響 . 43
3.2.1 用 urlopen函式傳送 HTTP GET請求 43
3.2.2 用 urlopen函式傳送 HTTP POST請求 44
3.2.3 請求逾時 . 45
3.2.4 設定 HTTP請求頭 46
3.2.5 設定中文 HTTP請求頭 . 48
3.2.6 請求基礎驗證頁面 . 50
3.2.7 搭建代理與使用代理 . 54
3.2.8 讀取和設定 Cookie 56
3.3 異常處理 60
3.3.1 URLError 60
3.3.2 HTTPError 61
3.4 解析連結 62
3.4.1 拆分與合併 URL(urlparse與 urlunparse) . 62
3.4.2 另一種拆分與合併 URL的方式(urlsplit與 urlunsplit) 63
3.4.3 連線 URL(urljoin) . 65
3.4.4 URL編碼(urlencode). 65
3.4.5 編碼與解碼(quote與 unquote). 66
3.4.6 參數轉換(parse_qs與 parse_qsl) 66
3.5 Robots協定 67
3.5.1 Robots協定簡介 . 67
3.5.2 分析 Robots協定 68
3.6 小結 . 69
第 4章網路庫 urllib3 . 70
4.1 urllib3簡介 70
4.2 urllib3模組 70
4.3 傳送 HTTP GET請求 71
4.4 傳送 HTTP POST請求 72
4.5 HTTP請求頭 74
4.6 HTTP回響頭 76
4.7 上傳檔案 76
4.8 逾時 . 78
4.9 小結 . 79
第 5章網路庫 requests . 80
5.1 基本用法 80
5.1.1 requests的 HelloWorld 81
5.1.2 GET請求 81
5.1.3 添加 HTTP請求頭 82
5.1.4 抓取二進制數據 83
5.1.5 POST請求 84
5.1.6 回響數據 . 85
5.2 高級用法 87
5.2.1 上傳檔案 . 88
5.2.2 處理 Cookie 89
5.2.3 使用同一個會話(Session) 90
5.2.4 SSL證書驗證 91
5.2.5 使用代理 . 94
5.2.6 逾時 95
5.2.7 身份驗證 . 97
5.2.8 將請求打包 . 97
5.3 小結 . 98
第 6章 Twisted網路框架 99
6.1 異步編程模型 . 99
6.2 Reactor(反應堆)模式 . 101
6.3 HelloWorld,Twisted框架 101
6.4 用 Twisted實現時間戳客戶端 103
6.5 用 Twisted實現時間戳服務端 104
6.6 小結 . 105
第 3篇解析庫
第 7章正則表達式 . 108
7.1 使用正則表達式 108
7.1.1 使用 match方法匹配字元串 108
7.1.2 使用 search方法在一個字元串中查找模式 . 109
7.1.3 匹配多個字元串 110
7.1.4 匹配任何單個字元 . 111
7.1.5 使用字元集 . 112
7.1.6 重複、可選和特殊字元 114
7.1.7 分組 117
7.1.8 匹配字元串的起始和結尾以及單詞邊界 . 118
7.1.9 使用 findall和 finditer查找每一次出現的位置 . 120
7.1.10 用 sub和 subn搜尋與替換. 121
7.1.11 使用 split分隔字元串 122
7.2 一些常用的正則表達式 . 123
7.3 項目實戰:抓取小說目錄和全文 . 124
7.4 項目實戰:抓取貓眼電影 Top100榜單 128
7.5 項目實戰:抓取糗事百科網的段子 133
7.6 小結 . 136
第 8章 lxml與 XPath . 137
8.1 lxml基礎 137
8.1.1 安裝 lxml 137
8.1.2 操作 XML . 138
8.1.3 操作 HTML . 140
8.2 XPath . 141
8.2.1 XPath概述 141
8.2.2 使用 XPath 141
8.2.3 選取所有節點 143
8.2.4 選取子節點 . 145
8.2.5 選取父節點 . 146
8.2.6 屬性匹配與獲取 146
8.2.7 多屬性匹配 . 147
8.2.8 按序選擇節點 148
8.2.9 節點軸選擇 . 149
8.2.10 在 Chrome中自動獲得 XPath代碼 151
8.2.11 使用 Chrome驗證 XPath . 153
8.3 項目實戰:抓取豆瓣 Top250圖書榜單 154
8.4 項目實戰:抓取起點中文網的小說信息 . 158
8.5 小結 . 161
第 9章 Beautiful Soup庫. 162
9.1 Beautiful Soup簡介 162
9.2 Beautiful Soup基礎 162
9.2.1 安裝 Beautiful Soup 163
9.2.2 選擇解析器 . 164
9.2.3 編寫第一個 Beautiful Soup程式 164
9.3 節點選擇器 . 165
9.3.1 選擇節點 . 165
9.3.2 嵌套選擇節點 167
9.3.3 選擇子節點 . 168
9.3.4 選擇父節點 . 171
9.3.5 選擇兄弟節點 172
9.4 方法選擇器 . 174
9.4.1 find_all方法 . 174
9.4.2 find方法 . 177
9.5 CSS選擇器 . 178
9.5.1 基本用法 . 179
9.5.2 嵌套選擇節點 180
9.5.3 獲取屬性值與文本 . 181
9.5.4 通過瀏覽器獲取 CSS選擇器代碼. 182
9.6 實戰案例:抓取租房信息 184
9.7 實戰案例:抓取酷狗網路紅歌榜 . 188
9.8 小結 . 191
第 10章 pyquery庫 . 192
10.1 pyquery簡介 . 192
10.2 pyquery基礎 . 192
10.2.1 安裝 pyquery . 193
10.2.2 pyquery的基本用法 193
10.3 CSS選擇器 . 194
10.4 查找節點. 196
10.4.1 查找子節點 . 196
10.4.2 查找父節點 . 197
10.4.3 查找兄弟節點 198
10.4.4 獲取節點信息 199
10.5 修改節點. 203
10.5.1 添加和移除節點的樣式(addClass和 removeClass). 204
10.5.2 修改節點屬性和文本內容(attr、removeAttr、text和 html) 205
10.5.3 刪除節點(remove) . 207
10.6 偽類選擇器 . 208
10.7 項目實戰:抓取噹噹圖書排行榜 210
10.8 項目實戰:抓取京東商城手機銷售排行榜 213
10.9 小結 219
第 4篇數據存儲
第 11章檔案存儲 222
11.1 打開檔案 . 222
11.2 操作檔案的基本方法 . 224
11.2.1 讀檔案和寫檔案 224
11.2.2 讀行和寫行 . 226
11.3 使用 FileInput對象讀取檔案 . 227
11.4 處理 XML格式的數據 . 228
11.4.1 讀取與搜尋 XML檔案 . 228
11.4.2 字典轉換為 XML字元串 . 229
11.4.3 XML字元串轉換為字典 231
11.5 處理 JSON格式的數據 232
11.5.1 JSON字元串與字典互相轉換 233
11.5.2 將 JSON字元串轉換為類實例 234
11.5.3 將類實例轉換為 JSON字元串 236
11.5.4 類實例列表與 JSON字元串互相轉換 236
11.6 將 JSON字元串轉換為 XML字元串 237
11.7 CSV檔案存儲 . 238
11.7.1 寫入 CSV檔案 238
11.7.2 讀取 CSV檔案 241
11.8 小結 241
第 12章資料庫存儲. 242
12.1 SQLite資料庫 . 242
12.1.1 管理 SQLite資料庫 . 243
12.1.2 用 Python操作 SQLite資料庫 . 245
12.2 MySQL資料庫 . 247
12.2.1 安裝 MySQL . 247
12.2.2 在 Python中使用 MySQL 250
12.3.1 NoSQL簡介 253
12.3.2 MongoDB資料庫 . 253
12.3.3 pymongo模組 . 255
12.4 項目實戰:抓取豆瓣音樂排行榜 256
12.5 項目實戰:抓取豆瓣電影排行榜 260
12.6 小結 264
第 5篇爬蟲高級套用
第 13章抓取異步數據 . 266
13.1 異步載入與 AJAX . 266
13.2 基本原理. 267
13.3 逆向工程. 270
13.4 提取結果. 274
13.5 項目實戰:支持搜尋功能的圖片爬蟲 . 274
13.6 項目實戰:抓取京東圖書評價 . 279
13.7 小結 284
第 14章可見即可爬:Selenium 285
14.1 安裝 Selenium . 286
14.2 安裝 WebDriver 286
14.2.1 安裝 ChromeDriver 287
14.2.2 裝 Edge WebDriver 288
14.2.3 安裝其他瀏覽器的 WebDriver 289
14.3 Selenium的基本使用方法 . 289
14.4 查找節點. 293
14.4.1 查找單個節點 293
14.4.2 查找多個節點 295
14.5 節點互動. 297
14.6 動作鏈 298
14.7 執行 JavaScript代碼 . 301
14.8 獲取節點信息 302
14.9 管理 Cookies . 303
14.10 改變節點的屬性值 . 304
14.11 項目實戰:抓取 QQ空間說說的內容 . 306
14.12 小結 308
第 15章基於 Splash的爬蟲 . 309
15.1 Splash基礎 . 309
15.1.1 Splash功能簡介 309
15.1.2 安裝 Docker 310
15.1.3 安裝 Splash . 310
15.2 Splash Lua腳本 312
15.2.1 第一個 Lua腳本 312
15.2.2 異步處理 . 313
15.2.3 Splash對象屬性 314
15.2.4 go方法 . 318
15.2.5 wait方法 . 319
15.2.6 jsfunc方法 320
15.2.7 evaljs方法 320
15.2.8 runjs方法 . 320
15.2.9 autoload方法 321
15.2.10 call_later方法 . 322
15.2.11 http_get方法 . 323
15.2.12 http_post方法 . 324
15.2.13 set_content方法 325
15.2.14 html方法 325
15.2.15 png方法 326
15.2.16 jpeg方法 . 326
15.2.17 har方法 326
15.2.18 其他方法 . 327
15.3 使用 CSS選擇器 . 331
15.3.1 select方法 331
15.3.2 select_all方法 . 332
15.4 模擬滑鼠和鍵盤的動作 333
15.5 Splash HTTP API 334
15.6 項目實戰:使用 Splash Lua抓取京東搜尋結果 . 338
15.7 小結 340
第 16章抓取移動 App的數據 . 341
16.1 使用 Charles . 341
16.1.1 抓取 HTTP數據包 . 342
16.1.2 安裝 PC端證書 . 344
16.1.3 在手機端安裝證書 . 345
16.1.4 監聽 HTTPS數據包 . 346
16.2 使用 mitmproxy 348
16.2.1 安裝 mitmproxy. 348
16.2.2 在 PC端安裝 mitmproxy證書 349
16.2.3 在移動端安裝 mitmproxy證書. 352
16.2.4 mitmproxy有哪些功能 353
16.2.5 設定手機的代理 353
16.2.6 用 mitmproxy監聽 App的請求與回響數據 . 354
16.2.7 使用 mitmproxy編輯請求信息. 356
16.2.8 mitmdump與 Python對接 . 357
16.2.9 使用 mitmweb監聽請求與回響 361
16.3 項目實戰:實時抓取“得到” App線上課程 363
16.4 小結 367
第 17章使用 Appium在移動端抓取數據 . 368
17.1 安裝 Appium . 368
17.1.1 安裝 Appium桌面端 368
17.1.2 配置 Android開發環境 370
17.1.3 配置 iOS開發環境 371
17.2 Appium的基本使用方法 . 372
17.2.1 啟動 Appium服務 . 372
17.2.2 查找 Android App的 Package和入口 Activity. 374
17.2.3 控制 App . 376
17.3 使用 Python控制手機 App 379
17.4 AppiumPythonClient API. 380
17.4.1 初始化(Remote類) 380
17.4.2 查找元素 . 381
17.4.3 單擊元素 . 381
17.4.4 螢幕拖動 . 382
17.4.5 螢幕滑動 . 382
17.4.6 拖曳操作 . 383
17.4.7 文本輸入 . 383
17.4.8 動作鏈 383
17.5 項目實戰:利用 Appium抓取微信朋友圈信息 384
17.6 小結 388
第 18章多執行緒和多進程爬蟲 389
18.1 執行緒與進程 . 389
18.1.1 進程 389
18.1.2 執行緒 390
18.2 Python與執行緒 . 390
18.2.1 使用單執行緒執行程式 . 390
18.2.2 使用多執行緒執行程式 . 391
18.2.3 為執行緒函式傳遞參數 . 393
18.2.4 執行緒和鎖 . 394
18.3 高級執行緒模組(threading) . 395
18.3.1 Thread類與執行緒函式 . 395
18.3.2 Thread類與執行緒對象 . 396
18.3.3 從 Thread類繼承 . 398
18.4 執行緒同步. 399
18.4.1 執行緒鎖 400
18.4.2 信號量 402
18.5 生產者—消費者問題與 queue模組 405
18.6 多進程 407
18.7 項目實戰:抓取豆瓣音樂 Top250排行榜(多執行緒版) 408
18.8 項目實戰:抓取豆瓣音樂 Top250排行榜(多進程版) 411
18.9 小結 412
第 19章網路爬蟲框架:Scrapy 413
19.1 Scrapy基礎知識 . 413
19.1.1 Scrapy簡介 . 413
19.1.2 Scrapy安裝 . 414
19.1.3 Scrapy Shell抓取 Web資源 . 415
19.2 用 Scrapy編寫網路爬蟲 417
19.2.1 創建和使用 Scrapy工程 417
19.2.2 在 PyCharm中使用 Scrapy 419
19.2.3 在 PyCharm中使用擴展工具運行 Scrapy程式 . 421
19.2.4 使用 Scrapy抓取數據,並通過 XPath指定解析規則 423
19.2.5 將抓取到的數據保存為多種格式的檔案 424
19.2.6 使用 ItemLoader保存單條抓取的數據 426
19.2.7 使用 ItemLoader保存多條抓取的數據 428
19.2.8 抓取多個 URL . 430
19.3 Scrapy的高級套用 431
19.3.1 處理登錄頁面 431
19.3.2 處理帶隱藏文本框的登錄頁面 . 434
19.3.3 通過 API抓取天氣預報數據 436
19.3.4 從 CSV格式轉換到 JSON格式 443
19.3.5 下載器中間件 447
19.3.6 爬蟲中間件 . 452
19.3.7 Item管道 455
19.3.8 通用爬蟲 . 465
19.4 小結 474
第 20章綜合爬蟲項目:可視化爬蟲 475
20.1 項目簡介. 475
20.2 主界面設計和實現 . 477
20.3 獲取商品頁數和每頁商品數 . 478
20.4 並發抓取商品列表 . 479
20.5 資料庫操作類 481
20.6 情感分析. 484
20.7 抓取和分析商品評論數據 485
20.8 可視化評論數據 486
20.9 小結 488

相關詞條

熱門詞條

聯絡我們