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