網(wǎng)絡爬蟲是按照一定規(guī)則自動請求服務器上的網(wǎng)頁,并采集網(wǎng)頁數(shù)據(jù)的一種程序或腳本,它可以代替人進行數(shù)據(jù)采集,也可以自動采集網(wǎng)頁數(shù)據(jù)、高效利用互聯(lián)網(wǎng)數(shù)據(jù),因此在市場應用中占據(jù)了重要位置。本書以Windows操作系統(tǒng)為主要開發(fā)平臺,系統(tǒng)、全面地講解了網(wǎng)絡爬蟲的相關知識。本書的主要內(nèi)容包括保存服務器網(wǎng)頁到本地、使用正則表達式提取網(wǎng)頁內(nèi)容、爬取豆瓣電影TOP250欄目、使用requests庫爬取電影網(wǎng)站、通過模擬用戶登錄爬取網(wǎng)站、使用Scrapy框架爬取圖片網(wǎng)站、使用分布式爬蟲爬取騰訊招聘頻道,主要知識點囊括網(wǎng)絡爬蟲基礎知識、網(wǎng)頁請求原理、抓取靜態(tài)網(wǎng)頁數(shù)據(jù)、解析網(wǎng)頁數(shù)據(jù)、抓取動態(tài)網(wǎng)頁數(shù)據(jù)、網(wǎng)絡爬蟲的優(yōu)化、數(shù)據(jù)的持久化存儲、識別驗證碼、搭建網(wǎng)絡爬蟲框架、網(wǎng)絡分布式爬蟲Scrapy-Redis的開發(fā)和部署等。本書內(nèi)容通俗易懂,案例豐富,實用性強,特別適合Python語言的基礎學習者和進階學習者,也適合Python程序員、爬蟲工程師等編程愛好者。本書不僅可以作為高校教材,也可以作為相關培訓機構的教材,還可以作為廣大網(wǎng)絡爬蟲開發(fā)者的參考書。此外,本書開發(fā)了豐富的教學資源庫,并免費提供所有素材。
錢游,副教授,重慶市名師工作室學員,主要從事人工智能、數(shù)據(jù)挖掘研究。主持市級項目2項、校級在線課程1門。發(fā)表論文16篇,其中中文核心期刊論文3篇,教研教改論文5篇。編寫教材5部,獲國家級實用新型專利5項,軟件著作權4項,軟件開發(fā)社會服務項目近30項,榮獲市級教學成果獎、全國嵌入式競賽優(yōu)秀指導老師獎、全國大學生電子設計競賽(重慶賽區(qū)"TI杯”)一等獎等十余項獎項。
目 錄
項目一 保存服務器網(wǎng)頁到本地 1
任務1 認識網(wǎng)絡爬蟲 2
任務演示 2
知識準備 2
1. 初步認識網(wǎng)絡爬蟲 2
2. 網(wǎng)絡爬蟲的結(jié)構及其工作原理 4
3. 爬蟲技術的風險與Robots協(xié)議 5
4. Python的安裝 6
5. Pygame的簡單使用 11
任務實施 12
任務拓展 13
1. 反爬蟲的目的與手段 13
2. Windows環(huán)境下的MongoDB數(shù)據(jù)庫安裝和配置 14
3. Linux環(huán)境下的MongoDB數(shù)據(jù)庫安裝和配置 16
任務2 將請求到的網(wǎng)頁保存到本地 18
任務演示 18
知識準備 19
1. 使用urllib請求網(wǎng)頁 19
2. 安裝和配置MySQL數(shù)據(jù)庫 20
任務實施 28
任務拓展 29
小結(jié) 30
復習題 31
項目二 使用正則表達式提取網(wǎng)頁內(nèi)容 32
任務1 在網(wǎng)頁上展示偉大抗疫精神 33
任務演示 33
知識準備 33
1. HTML基礎知識 33
2. CSS基礎知識 35
3. CSS樣式選擇器 38
任務實施 44
任務拓展 45
1. JavaScript的引入 45
2. JavaScript的基本語法 48
任務2 使用正則表達式提取文本中的指定內(nèi)容 53
任務演示 53
知識準備 53
1. 正則表達式的基本語法 54
2. 正則表達式的使用 57
任務實施 61
任務拓展 62
小結(jié) 63
復習題 63
項目三 爬取豆瓣電影TOP250欄目 65
任務1 使用urllib框架請求網(wǎng)頁 66
任務演示 66
知識準備 66
1. 網(wǎng)絡爬蟲開發(fā)的基本流程 66
2. urllib框架的基本模塊 66
3. 字符的編碼和解碼 74
任務實施 76
1. URL分析 76
2. 編碼規(guī)范 77
3. 爬取豆瓣電影TOP250欄目 77
任務拓展 81
任務2 使用BeautifulSoup4解析網(wǎng)頁 82
任務演示 82
知識準備 82
1. BeautifulSoup4的四個對象 82
2. 文檔的遍歷 86
3. 文檔的搜索 91
任務實施 95
任務拓展 97
任務3 使用XPath解析網(wǎng)頁數(shù)據(jù) 99
任務演示 99
知識準備 99
任務實施 105
任務拓展 106
任務4 數(shù)據(jù)的持久化存儲 108
任務演示 108
知識準備 108
任務實施 116
任務拓展 118
小結(jié) 121
復習題 121
項目四 使用requests庫爬取電影網(wǎng)站 123
任務1 使用requests庫請求網(wǎng)頁 124
任務演示 124
知識準備 124
1. requests庫的安裝 124
2. GET請求 125
3. POST請求 126
任務實施 129
任務拓展 131
任務2 使用requests-html庫解析網(wǎng)頁 136
任務演示 136
知識準備 136
1. requests-html庫的新功能 136
2. requests-html庫的安裝 136
3. requests-html庫的使用 137
任務實施 139
任務拓展 142
1. 網(wǎng)絡爬蟲的優(yōu)化 142
2. 將請求到的數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中 145
小結(jié) 149
復習題 149
項目五 通過模擬用戶登錄爬取網(wǎng)站 151
任務1 模擬用戶登錄 152
任務演示 152
知識準備 152
1. 使用ddddocr模塊識別驗證碼 153
2. 使用在線平臺進行打碼 153
任務實施 160
1. 對古詩文網(wǎng)的登錄驗證碼進行驗證 160
2. 實現(xiàn)模擬用戶登錄 163
任務拓展 167
1. 攜帶Cookies請求網(wǎng)頁 167
2. 古詩文網(wǎng)登錄實現(xiàn) 169
3. 在登錄成功后進行數(shù)據(jù)采集 174
任務2 使用Selenium模擬用戶登錄豆瓣網(wǎng) 175
任務演示 175
知識準備 176
1. 什么是Selenium 176
2. Selenium的安裝 176
任務實施 180
任務拓展 182
小結(jié) 184
復習題 185
項目六 使用Scrapy框架爬取圖片網(wǎng)站 186
任務1 Scrapy開發(fā)環(huán)境搭建 187
任務演示 187
知識準備 187
1. 常見的爬蟲框架 187
2. Scrapy框架概述 188
任務實施 189
任務拓展 196
任務2 使用Scrapy框架爬取代理IP 200
任務演示 200
知識準備 200
1. XPath選擇器 200
2. CSS選擇器 201
任務實施 202
任務拓展 210
任務3 Scrapy數(shù)據(jù)的持久化存儲 211
任務演示 211
知識準備 211
1. 基于終端命令存儲 212
2. 基于管道存儲 212
任務實施 214
1. 實現(xiàn)基于終端命令的數(shù)據(jù)持久化存儲 214
2. 實現(xiàn)基于管道的數(shù)據(jù)持久化存儲——使用文本存儲數(shù)據(jù) 215
3. 實現(xiàn)基于管道的數(shù)據(jù)持久化存儲—使用MySQL數(shù)據(jù)庫存儲數(shù)據(jù) 219
4. 實現(xiàn)基于管道的數(shù)據(jù)持久化存儲——使用Redis數(shù)據(jù)庫存儲數(shù)據(jù) 221
5. 實現(xiàn)基于管道的數(shù)據(jù)持久化存儲——使用MongoDB數(shù)據(jù)庫存儲數(shù)據(jù) 224
任務拓展 227
任務4 爬取圖片網(wǎng)站 230
任務演示 230
知識準備 230
任務實施 231
任務拓展 235
1. 將爬取的圖片名及其路徑保存到MySQL數(shù)據(jù)庫中 235
2. 使用Scrapy框架爬取圖說歷史欄目 236
小結(jié) 239
復習題 239
項目七 使用分布式爬蟲爬取騰訊招聘頻道 241
任務1 搭建Scrapy-Redis開發(fā)環(huán)境 242
任務演示 242
知識準備 242
1. 分布式爬蟲的基本概念 242
2. 分布式環(huán)境的搭建 243
3. 在Ubuntu系統(tǒng)上安裝Scrapy 247
4. 在CentOS 7系統(tǒng)上安裝Scrapy 249
任務實施 250
任務拓展 251
任務2 開發(fā)分布式爬蟲 252
任務演示 252
知識準備 253
任務實施 254
1. 創(chuàng)建Scrapy爬蟲 254
2. 初始化配置 256
3. 網(wǎng)站結(jié)構分析 256
4. 爬蟲的核心代碼 261
5. 部署分布式爬蟲 266
任務拓展 271
1. 隨機請求頭 271
2. 爬取視頻 273
小結(jié) 277
復習題 277