□□ 章 爬蟲程序的構(gòu)成和完整鏈條 . 1
1.1 一個簡單的爬蟲程序 . 1
1.□ 爬蟲的完整鏈條 . 3
1.3 爬取下來的數(shù)據(jù)被用在什么地方 . 7
1.4 爬蟲工程師常用的庫 . 11
1.4.1 網(wǎng)絡(luò)請求庫 . 11
1.4.□ 網(wǎng)頁文本解析. 19
1.5 數(shù)據(jù)存儲 . 30
1.5.1 將數(shù)據(jù)存入MySQL 數(shù)據(jù)庫 . 31
1.5.□ 將數(shù)據(jù)存入MongoDB 數(shù)據(jù)庫 . 34
1.5.3 將數(shù)據(jù)存入Redis 數(shù)據(jù)庫 . 36
1.5.4 Excel 文件的讀寫 . 38
1.6 小試牛刀——出版社新聞資訊爬蟲 . 4□
實踐題 . 46
本章小結(jié) . 47
第□ 章 自動化工具的使用 . 48
□.1 網(wǎng)頁渲染工具 . 48
□.1.1 WebDriver 是什么 . 51
□.1.□ Selenium 的介紹和基本使用 . 5□
□.1.3 Pyppeteer 的介紹和基本使用 . 59
□.1.4 Splash 知識擴展 . 61
本節(jié)小結(jié) . 6□
□.□ App 自動化工具 . 6□
□.□.1 Android 調(diào)試橋 . 6□
□.□.□ Airtest Project 與Poco . 64
VIII Python3 網(wǎng)絡(luò)爬蟲寶典
□.□.3 爬取App 中的圖片 . 75
□.□.4 控制多臺設(shè)備. 78
本節(jié)小結(jié) . 79
實踐題 . 79
本章小結(jié) . 79
第3 章 增量爬取的原理與實現(xiàn) . 80
3.1 增量爬取的分類和實現(xiàn)原理 . 81
3.1.1 增量爬取的分類 . 81
3.1.□ 增量爬取的實現(xiàn)原理 . 83
本節(jié)小結(jié) . 88
3.□ 增量池的復雜度和效率 . 88
3.□.1 增量池的時間復雜度 . 88
3.□.□ 增量池的空間復雜度 . 95
本節(jié)小結(jié) . 103
3.3 Redis 的數(shù)據(jù)持久化 . 103
3.3.1 持久化方式的分類和特點 . 103
3.3.□ RDB 持久化的實踐 . 106
3.3.3 AOF 持久化的實踐 . 11□
3.3.4 Redis 密碼持久化 . 115
本節(jié)小結(jié) . 115
實踐題 . 115
本章小結(jié) . 116
第4 章 分布式爬蟲的設(shè)計與實現(xiàn) . 117
4.1 分布式爬蟲的原理和分類 . 117
4.1.1 分布式爬蟲的原理 . 117
4.1.□ 分布式爬蟲的分類 . 1□0
4.1.3 共享隊列的選擇 . 1□□
本節(jié)小結(jié) . 1□5
4.□ 分布式爬蟲庫Scrapy-Redis . 1□6
4.□.1 Scrapy-Redis 的介紹和基本使用 . 1□7
4.□.□ 去重器、調(diào)度器和隊列的源碼解析 . 1□9
目錄 IX
本節(jié)小結(jié) . 134
4.3 基于Redis 的分布式爬蟲 . 134
4.3.1 對等分布式爬蟲的實現(xiàn) . 135
4.3.□ 主從分布式爬蟲的實現(xiàn) . 139
本節(jié)小結(jié) . 141
4.4 基于RabbitMQ 的分布式爬蟲 . 141
4.4.1 RabbitMQ 的安裝和基本操作 . 14□
4.4.□ 分布式爬蟲的具體實現(xiàn) . 146
本節(jié)小結(jié) . 15□
實踐題 . 15□
本章小結(jié) . 15□
第5 章 網(wǎng)頁正文自動化提取方法 . 153
5.1 Python Readability . 155
5.□ 基于文本及符號密度的網(wǎng)頁正文提取方法 . 158
5.3 GeneralNewsExtractor . 16□
5.3.1 GeneralNewsExtractor 的安裝和使用 . 16□
5.3.□ GeneralNewsExtractor 的源碼解讀 . 165
本節(jié)小結(jié) . 175
本章小結(jié) . 175
第6 章 Python 項目打包部署與定時調(diào)度 . 176
6.1 如何判斷項目是否需要部署 . 176
6.□ 爬蟲部署平臺Scrapyd . 179
6.□.1 Scrapyd 的安裝和服務啟動 . 179
6.□.□ 爬蟲項目的打包和部署 . 180
本節(jié)小結(jié) . 184
6.3 Scrapyd 源碼深度剖析 . 185
6.4 項目打包與解包運行實戰(zhàn) . 197
6.4.1 用Setuptools 打包項目 . 197
6.4.□ 運行EGG 包中的Python 項目 . 199
6.4.3 編碼實現(xiàn)Python 項目打包 . □01
本節(jié)小結(jié) . □03
X Python3 網(wǎng)絡(luò)爬蟲寶典
6.5 定時功能 . □03
6.5.1 操作系統(tǒng)提供的定時功能 . □03
6.5.□ 編程語言實現(xiàn)的定時功能 . □06
6.5.3 APScheduler . □09
本節(jié)小結(jié) . □1□
6.6 實戰(zhàn):開發(fā)Python 項目管理平臺Sailboat . □1□
6.6.1 Sailboat 的模塊規(guī)劃和技術(shù)選型 . □1□
6.6.□ Sailboat 的權(quán)限設(shè)計思路 . □14
6.6.3 Sailboat 的數(shù)據(jù)結(jié)構(gòu)設(shè)計 . □15
6.6.4 Sailboat 基礎(chǔ)結(jié)構(gòu)的搭建 . □18
6.6.5 Sailboat 用戶注冊和登錄接口的編寫 . □□0
6.6.6 Sailboat 權(quán)限驗證裝飾器的編寫 . □□9
6.6.7 Sailboat 項目部署接口和文件操作對象的編寫 . □3□
6.6.8 Sailboat 項目調(diào)度接口的編寫 . □40
6.6.9 Sailboat 執(zhí)行器的編寫和日志的生成 . □43
6.6.10 Sailboat 定時調(diào)度功能的實現(xiàn) . □48
6.6.11 Sailboat 異常監(jiān)控和釘釘機器人通知功能的編寫 . □49
本節(jié)小結(jié) . □58
6.7 分布式調(diào)度平臺Crawlab 核心架構(gòu)解析 . □59
實踐題 . □6□
本章小結(jié) . □6□