本書基于Python 3.10版本,以項目實戰(zhàn)的方式系統(tǒng)地介紹了Python網(wǎng)絡(luò)爬蟲開發(fā)的相關(guān)知識,主要內(nèi)容包括Python基礎(chǔ)實戰(zhàn)、網(wǎng)頁數(shù)據(jù)采集實戰(zhàn)、網(wǎng)頁數(shù)據(jù)解析實戰(zhàn)、并發(fā)技術(shù)實戰(zhàn)、動態(tài)內(nèi)容采集實戰(zhàn)、爬蟲數(shù)據(jù)存儲實戰(zhàn)、Scrapy爬蟲框架實戰(zhàn)等,通過多個實戰(zhàn)任務(wù)的練習(xí),讓讀者能最大限度地掌握Python網(wǎng)絡(luò)爬蟲的核心技術(shù)。為了方便讀者學(xué)習(xí),本書附有配套源代碼、教學(xué)PPT、題庫、教學(xué)視頻、教學(xué)設(shè)計等資源。本書可作為高等院校計算機(jī)相關(guān)專業(yè)程序設(shè)計課程教材,也可供從事計算機(jī)爬蟲應(yīng)用開發(fā)的相關(guān)人員使用。
劉珍,中共黨員,湖南大學(xué)全日制碩士研究生,計算機(jī)科學(xué)與技術(shù)高級講師,福田區(qū)技術(shù)能手,計算機(jī)網(wǎng)絡(luò)管理高級技師、電子商務(wù)高級技師,至今從事教育工作14余年,累計獲得各項教研成果獎項30余項,主持教科研項目3項,參與教科研項目6項,累計發(fā)表科研論文10余篇,獲得計算機(jī)軟件開發(fā)專利著作權(quán)5項,主編《微信小程序開發(fā)》教材,主講廣東省級精品課程《小程序開發(fā)》。
項目1 Python基礎(chǔ)實戰(zhàn) 1
任務(wù)1.1 Python開發(fā)環(huán)境搭建 2
1.1.1 在Windows系統(tǒng)中安裝Python 2
1.1.2 在Linux系統(tǒng)中安裝Python 4
1.1.3 安裝PyCharm集成開發(fā)環(huán)境 5
任務(wù)1.2 從HTML文檔中提取特定字符串 10
1.2.1 數(shù)值類型與變量 10
1.2.2 字符串 11
1.2.3 運(yùn)算符 12
1.2.4 流程控制 13
任務(wù)1.3 用列表、字典等組織數(shù)據(jù) 16
1.3.1 列表(list) 17
1.3.2 元組(tuple) 17
1.3.3 字典(dict) 18
1.3.4 集合(set) 19
1.3.5 函數(shù) 20
任務(wù)1.4 基于正則表達(dá)式提取圖片鏈接文本 23
1.4.1 模塊和包 23
1.4.2 異常處理 26
1.4.3 正則表達(dá)式 28
任務(wù)1.5 從JSON文件中加載數(shù)據(jù) 31
1.5.1 類與對象 31
1.5.2 文件與目錄操作 34
1.5.3 JSON 38
項目2 網(wǎng)頁數(shù)據(jù)采集實戰(zhàn) 43
任務(wù)2.1 利用工具爬取一個電商網(wǎng)頁 43
2.1.1 爬蟲的定義 44
2.1.2 爬蟲的類型 44
2.1.3 與爬蟲相關(guān)的網(wǎng)站文件 47
2.1.4 反爬蟲應(yīng)對策略 48
2.1.5 爬蟲的合法性 50
任務(wù)2.2 基于urllib庫爬取一個電商網(wǎng)頁 57
任務(wù)2.3 urllib處理發(fā)送GET/POST請求 61
任務(wù)2.4 請求頭偽裝與代理服務(wù)器應(yīng)用 66
2.4.1 請求頭偽裝 67
2.4.2 代理服務(wù)器 67
任務(wù)2.5 網(wǎng)絡(luò)異常處理 73
2.5.1 URLError 73
2.5.2 HTTPError 74
任務(wù)2.6 基于requests庫爬取電商網(wǎng)頁 74
項目3 網(wǎng)頁數(shù)據(jù)解析實戰(zhàn) 79
任務(wù)3.1 HTML基礎(chǔ) 79
3.1.1 HTML網(wǎng)頁的結(jié)構(gòu) 80
3.1.2 Chrome瀏覽器的DevTools 81
任務(wù)3.2 基于正則表達(dá)式的網(wǎng)頁數(shù)據(jù)解析 85
任務(wù)3.3 XPath應(yīng)用 88
3.3.1 XPath簡介 89
3.3.2 lxml簡介 94
任務(wù)3.4 Beautiful Soup解析數(shù)據(jù) 99
任務(wù)3.5 JSON數(shù)據(jù)解析 106
項目4 并發(fā)技術(shù)實戰(zhàn) 112
任務(wù)4.1 基于進(jìn)程的并發(fā)爬蟲 112
4.1.1 并發(fā)原理 113
4.1.2 進(jìn)程(Process) 113
4.1.3 Python的多進(jìn)程并發(fā)編程 114
任務(wù)4.2 基于queue模塊的多線程爬蟲 122
4.2.1 線程(Thread) 123
4.2.2 Python的多線程并發(fā)編程 123
任務(wù)4.3 基于協(xié)程的并發(fā)爬蟲 129
任務(wù)4.4 歷史天氣并發(fā)爬取 131
項目5 動態(tài)內(nèi)容采集實戰(zhàn) 139
任務(wù)5.1 動態(tài)網(wǎng)頁基礎(chǔ) 139
任務(wù)5.2 Selenium的安裝配置 144
任務(wù)5.3 基于Selenium的動態(tài)網(wǎng)頁爬取 148
任務(wù)5.4 基于Selenium的模擬登錄 150
任務(wù)5.5 驗證碼的識別處理 154
5.5.1 驗證碼基礎(chǔ) 154
5.5.2 Pytesseract簡介 155
5.5.3 PIL簡介 156
任務(wù)5.6 基于Selenium的招聘職位獲取 159
項目6 爬蟲數(shù)據(jù)存儲實戰(zhàn) 165
任務(wù)6.1 MongoDB基礎(chǔ) 165
6.1.1 MongoDB的安裝 166
6.1.2 MongoDB的基本操作 170
任務(wù)6.2 基于PyMongo的爬蟲數(shù)據(jù)存儲 174
任務(wù)6.3 Redis數(shù)據(jù)庫基礎(chǔ) 179
6.3.1 Redis的安裝 180
6.3.2 Redis的操作命令 182
任務(wù)6.4 基于redis模塊的爬蟲數(shù)據(jù)存儲 184
項目7 Scrapy爬蟲框架實戰(zhàn) 188
任務(wù)7.1 Scrapy爬蟲框架基礎(chǔ) 188
7.1.1 Scrapy爬蟲框架簡介 189
7.1.2 Scrapy項目創(chuàng)建 191
7.1.3 Scrapy常用命令 192
任務(wù)7.2 定義Spider爬取斗魚直播平臺數(shù)據(jù) 195
7.2.1 Item類簡介 196
7.2.2 Spider類簡介 196
任務(wù)7.3 自定義爬蟲中間件爬取眾圖網(wǎng)數(shù)據(jù) 202
7.3.1 Scrapy的settings文件 202
7.3.2 Downloader Middlewares 203
任務(wù)7.4 CrawlSpider自動爬取數(shù)據(jù) 213
7.4.1 CrawlSpider 213
7.4.2 Rule 214
7.4.3 LinkExtractor 215
任務(wù)7.5 應(yīng)用Item Pipeline進(jìn)行后期數(shù)據(jù)處理 219
任務(wù)7.6 綜合實訓(xùn)——百度科學(xué)百科數(shù)據(jù)爬取 222