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