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