Python網(wǎng)絡(luò)爬蟲(chóng)從入門到實(shí)踐
定 價(jià):79 元
叢書(shū)名:大數(shù)據(jù)及人工智能產(chǎn)教融合系列叢書(shū)
- 作者:莊培杰
- 出版時(shí)間:2019/7/1
- ISBN:9787121371059
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.561
- 頁(yè)碼:312
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
本書(shū)講解了如何使用Python編寫(xiě)網(wǎng)絡(luò)爬蟲(chóng),涵蓋爬蟲(chóng)的概念、Web基礎(chǔ)、Chrome、Charles和Packet Capture抓包、urllib、Requests請(qǐng)求庫(kù)、lxml、Beautiful Soup、正則表達(dá)式解析數(shù)據(jù)、CSV、Excel、MySQL、Redis、MongoDB保存數(shù)據(jù)、反爬蟲(chóng)策略應(yīng)對(duì)、爬蟲(chóng)框架Scrapy的使用與部署,以及應(yīng)用案例。本書(shū)結(jié)構(gòu)清晰、內(nèi)容精練,代碼示例典型實(shí)用,附帶實(shí)踐過(guò)程中遇到問(wèn)題的解決方案,非常適合Python初學(xué)者和進(jìn)階讀者閱讀。
莊培杰,CSDN博客專家,排名146,訪問(wèn)量達(dá)1625W+,簡(jiǎn)書(shū)程序員專欄優(yōu)秀作者。從事編程開(kāi)發(fā)10余年,熟悉Python的方方面面,尤其擅長(zhǎng)Python爬蟲(chóng)和數(shù)據(jù)分析,F(xiàn)任思可教育投資開(kāi)發(fā)(深圳)有限公司Python高級(jí)工程師工程師。
目 錄
第1章 Python爬蟲(chóng)概念與Web基礎(chǔ) 1
1.1 爬蟲(chóng)概念 1
1.1.1 什么是爬蟲(chóng) 1
1.1.2 爬蟲(chóng)使用場(chǎng)景的引入 2
1.1.3 爬蟲(chóng)的組成部分 3
1.1.4 模擬請(qǐng)求 3
1.1.5 數(shù)據(jù)解析 4
1.1.6 數(shù)據(jù)保存 5
1.1.7 爬蟲(chóng)的學(xué)習(xí)路線 5
1.2 HTTP簡(jiǎn)述 6
1.2.1 簡(jiǎn)述一次網(wǎng)絡(luò)請(qǐng)求過(guò)程 6
1.2.2 URI和URL 7
1.2.3 HTTP請(qǐng)求報(bào)文 8
1.2.4 HTTP響應(yīng)報(bào)文 10
1.3 網(wǎng)頁(yè)的組成 13
1.3.1 HTML簡(jiǎn)介 13
1.3.2 CSS選擇器簡(jiǎn)介 16
1.3.3 JavaScript簡(jiǎn)介 17
第2章 Python爬蟲(chóng)基本庫(kù)的使用 18
2.1 Chrome抓包詳解 18
2.1.1 Controls 20
2.1.2 Filter 21
2.1.3 Request Table 21
2.2 urllib庫(kù)詳解 23
2.2.1 發(fā)送請(qǐng)求 23
2.2.2 抓取二進(jìn)制文件 24
2.2.3 模擬GET和POST請(qǐng)求 25
2.2.4 修改請(qǐng)求頭 26
2.2.5 設(shè)置連接超時(shí) 27
2.2.6 延遲提交數(shù)據(jù) 27
2.2.7 設(shè)置代理 27
2.2.8 Cookie 28
2.2.9 urllib.parse模塊 29
2.2.10 urllib.error異常處理模塊 31
2.2.11 urllib.robotparser模塊 32
2.3 用lxml庫(kù)解析網(wǎng)頁(yè)節(jié)點(diǎn) 34
2.3.1 安裝庫(kù) 34
2.3.2 XPath語(yǔ)法速成 34
2.4 實(shí)戰(zhàn):爬取小說(shuō)《三國(guó)演義》 36
第3章 Python爬蟲(chóng)抓包與數(shù)據(jù)解析 41
3.1 抓包進(jìn)階 41
3.1.1 HTTPS介紹 42
3.1.2 HTTPS的工作流程 43
3.1.3 Charles抓包 43
3.1.4 Packet Capture抓包 49
3.2 Requests HTTP請(qǐng)求庫(kù) 52
3.2.1 Requests庫(kù)簡(jiǎn)介 53
3.2.2 Requests HTTP基本請(qǐng)求 53
3.2.3 Requests 請(qǐng)求常用設(shè)置 54
3.2.4 Requests 處理返回結(jié)果 54
3.2.5 Requests 處理Cookie 55
3.2.6 Requests重定向與請(qǐng)求歷史 55
3.2.7 Requests 錯(cuò)誤與異常處理 55
3.2.8 Requests Session會(huì)話對(duì)象 55
3.2.9 Requests SSL證書(shū)驗(yàn)證 56
3.3 實(shí)戰(zhàn):爬取微信文章中的圖片、音頻和視頻 56
3.3.1 爬取標(biāo)題 56
3.3.2 爬取圖片 57
3.3.3 爬取音頻 58
3.3.4 爬取視頻 60
3.3.5 代碼整理 64
3.4 Beautiful Soup解析庫(kù) 67
3.4.1 Beautiful Soup簡(jiǎn)介 67
3.4.2 Beautiful Soup對(duì)象實(shí)例化 67
3.4.3 Beautiful Soup的四大對(duì)象 68
3.4.4 Beautiful Soup的各種節(jié)點(diǎn) 69
3.4.5 Beautiful Soup文檔樹(shù)搜索 69
3.4.6 Beautiful Soup 使用CSS選擇器 70
3.5 實(shí)戰(zhàn):爬取壁紙站點(diǎn)的壁紙 70
3.6 正則表達(dá)式 74
3.6.1 re模塊 74
3.6.2 正則規(guī)則詳解 75
3.6.3 正則練習(xí) 77
3.7 實(shí)戰(zhàn):爬取市級(jí)編碼列表 79
3.7.1 獲取所有市級(jí)的跳轉(zhuǎn)鏈接列表 80
3.7.2 解析表格獲得所有市級(jí)天氣鏈接 81
3.7.3 提取市級(jí)編碼 82
3.7.4 整合調(diào)整代碼 83
第4章 用CSV和Excel存儲(chǔ)數(shù)據(jù) 85
4.1 用CSV文件存儲(chǔ)數(shù)據(jù) 85
4.1.1 CSV寫(xiě)入 86
4.1.2 CSV讀取 87
4.2 實(shí)戰(zhàn):爬取星座運(yùn)勢(shì) 88
4.3 用Excel文件存儲(chǔ)數(shù)據(jù) 89
4.3.1 Excel寫(xiě)入 89
4.3.2 Excel讀取 90
4.4 實(shí)戰(zhàn):爬取某音樂(lè)平臺(tái)排行榜 91
第5章 用數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù) 99
5.1 MySQL數(shù)據(jù)庫(kù) 99
5.1.1 安裝MySQL 100
5.1.2 在Windows環(huán)境下安裝MySQL 100
5.1.3 在Windows環(huán)境下配置MYSQL_HOME環(huán)境變量 101
5.1.4 在Windows環(huán)境下設(shè)置MySQL登錄密碼 101
5.1.5 在Windows環(huán)境下啟動(dòng)或關(guān)閉MySQL服務(wù) 102
5.1.6 Mac環(huán)境 103
5.1.7 Ubuntu環(huán)境 103
5.1.8 MySQL的基本操作 104
5.1.9 MySQL數(shù)據(jù)庫(kù)語(yǔ)法速成 106
5.1.10 Python連接MySQL數(shù)據(jù)庫(kù) 110
5.1.11 MySQL特殊符號(hào)和表情問(wèn)題 114
5.1.12 實(shí)戰(zhàn):抓取某技術(shù)網(wǎng)站數(shù)據(jù) 115
5.2 數(shù)據(jù)庫(kù)可視化工具DataGrip 122
5.2.1 建立數(shù)據(jù)庫(kù)關(guān)聯(lián) 122
5.2.2 編寫(xiě)SQL語(yǔ)句 123
5.2.3 常見(jiàn)問(wèn)題:連接遠(yuǎn)程主機(jī) 124
5.3 Redis數(shù)據(jù)庫(kù) 125
5.3.1 安裝Redis 126
5.3.2 redis-py庫(kù)的安裝 130
5.3.3 redis-py基本操作示例 130
5.3.4 實(shí)戰(zhàn):爬取視頻彈幕并保存到Redis 134
5.4 MongoDB數(shù)據(jù)庫(kù) 137
5.4.1 安裝MongoDB 137
5.4.2 安裝PyMongo庫(kù) 140
5.4.3 PyMongo基本操作示例 140
5.4.4 實(shí)戰(zhàn):爬取某電商網(wǎng)站關(guān)鍵字搜索結(jié)果并保存到MongoDB 144
第6章 Python應(yīng)對(duì)反爬蟲(chóng)策略 148
6.1 反爬蟲(chóng)概述 148
6.1.1 為什么會(huì)出現(xiàn)反爬蟲(chóng) 149
6.1.2 常見(jiàn)的爬蟲(chóng)與反爬蟲(chóng)大戰(zhàn) 149
6.2 反爬蟲(chóng)策略 150
6.2.1 User-Agent限制 150
6.2.2 302重定向 151
6.2.3 IP限制 151
6.2.4 什么是網(wǎng)絡(luò)代理 151
6.2.5 如何獲取代理IP 151
6.2.6 ADSL撥號(hào)代理 152
6.2.7 Squid 配置代理緩存服務(wù)器 156
6.2.8 TinyProxy配置代理緩存服務(wù)器 158
6.2.9 Cookie限制 159
6.3 JavaScript反爬蟲(chóng)策略 159
6.3.1 Ajax動(dòng)態(tài)加載數(shù)據(jù) 159
6.3.2 實(shí)戰(zhàn):爬取某素材網(wǎng)內(nèi)容分析 159
6.3.3 數(shù)據(jù)請(qǐng)求分析 160
6.3.4 編寫(xiě)代碼 163
6.4 Selenium模擬瀏覽器操作 166
6.4.1 Selenium簡(jiǎn)介 166
6.4.2 安裝Selenium 167
6.4.3 Selenium常用函數(shù) 168
6.5 實(shí)戰(zhàn):爬取某網(wǎng)站的特定圖 172
6.6 PhantomJS 175
6.6.1 在Windows上安裝PhantomJS 175
6.6.2 在Mac上安裝PhantomJS 175
6.6.3 在Ubuntu上安裝PhantomJS 176
6.6.4 關(guān)于PhantomJS的重要說(shuō)明 176
6.7 常見(jiàn)驗(yàn)證碼策略 176
6.7.1 圖片驗(yàn)證碼 177
6.7.2 實(shí)戰(zhàn):實(shí)現(xiàn)圖片驗(yàn)證碼自動(dòng)登錄 178
6.7.3 實(shí)戰(zhàn):實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼自動(dòng)登錄 185
第7章 Python爬蟲(chóng)框架Scrapy(上) 196
7.1 Scrapy框架簡(jiǎn)介與安裝 197
7.1.1 Scrapy相關(guān)信息 197
7.1.2 Scrapy的安裝 197
7.2 實(shí)戰(zhàn):爬取某網(wǎng)站每日壁紙 199
7.2.1 抓取目標(biāo)分析 199
7.2.2 創(chuàng)建爬蟲(chóng)腳本 201
7.2.3 編寫(xiě)爬蟲(chóng)腳本 202
7.2.4 運(yùn)行爬蟲(chóng)腳本 203
7.2.5 解析數(shù)據(jù) 203
7.3 Scrapy架構(gòu)簡(jiǎn)介 204
7.3.1 Scrapy架構(gòu)圖 204
7.3.2 各個(gè)模塊間的協(xié)作流程 205
7.3.3 協(xié)作流程擬人化對(duì)話版 206
7.4 Spider詳解 207
7.4.1 Spider的主要屬性和函數(shù) 207
7.4.2 Spider運(yùn)行流程 207
7.5 Request類和Response類 209
7.5.1 Request詳解 209
7.5.2 Response類常用參數(shù)、方法與子類 210
7.5.3 選擇器 211
7.5.4 Scrapy Shell 212
7.6 Item詳解 213
7.7 Item Pipeline詳解 213
7.7.1 自定義Item Pipeline類 213
7.7.2 啟用Item Pipeline 214
7.8 實(shí)戰(zhàn):完善爬取每日壁紙的腳本 214
7.8.1 定義BingItem 215
7.8.2 使用ImagesPipeline 215
7.8.3 修改Spider代碼 216
7.8.4 運(yùn)行爬蟲(chóng)腳本 216
7.9 設(shè)置請(qǐng)求頭 217
7.9.1 構(gòu)造Request時(shí)傳入 217
7.9.2 修改settings.py文件 217
7.9.3 為爬蟲(chóng)添加custom_settings字段 218
7.10 下載中間件詳解 218
7.10.1 自定義Downloader Middleware類 218
7.10.2 啟用自定義的代理下載中間件 219
7.11 實(shí)戰(zhàn):爬取某站點(diǎn)繪畫(huà)頻道的圖片 219
7.11.1 分析爬取的站點(diǎn) 219
7.11.2 新建項(xiàng)目與明確爬取目標(biāo) 221
7.11.3 創(chuàng)建爬蟲(chóng)爬取網(wǎng)頁(yè) 221
7.11.4 設(shè)置代理 223
7.11.5 解析數(shù)據(jù) 223
7.11.6 存儲(chǔ)數(shù)據(jù) 224
7.11.7 完善代碼 226
第8章 Python爬蟲(chóng)框架Scrapy(下) 228
8.1 Scrapy對(duì)接Selenium 228
8.1.1 如何對(duì)接 228
8.1.2 對(duì)接示例:爬取某網(wǎng)站首頁(yè)文章 229
8.2 實(shí)戰(zhàn):用Scrapy實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代理池 232
8.2.1 代理池的設(shè)計(jì) 232
8.2.2 創(chuàng)建項(xiàng)目 232
8.2.3 編寫(xiě)獲取IP的爬蟲(chóng) 233
8.2.4 編寫(xiě)檢測(cè)IP的爬蟲(chóng) 238
8.2.5 編寫(xiě)調(diào)度程序 240
8.2.6 編寫(xiě)獲取代理IP的接口 241
8.2.7 使用代理 243
8.3 用Scrapyrt調(diào)度Scrapy 243
8.3.1 相關(guān)文檔與安裝Scrapyrt 243
8.3.2 Scrapyrt GET請(qǐng)求相關(guān)參數(shù) 244
8.3.3 Scrapyrt POST請(qǐng)求相關(guān)參數(shù) 246
8.4 用Docker部署Scrapy 246
8.4.1 Docker簡(jiǎn)介 246
8.4.2 下載并安裝Docker 247
8.4.3 創(chuàng)建Dockerfile 249
8.4.4 構(gòu)建Docker鏡像 250
8.4.5 把生成的Docker鏡像推送到Docker Hub 251
8.4.6 在云服務(wù)器上運(yùn)行Docker鏡像 253
第9章 數(shù)據(jù)分析案例:Python崗位行情 254
9.1 數(shù)據(jù)爬取 254
9.2 NumPy庫(kù)和pandas庫(kù) 258
9.2.1 ndarray數(shù)組 259
9.2.2 ndarray數(shù)組的常用操作 260
9.2.3 pandas庫(kù) 263
9.3 用Matplotlib實(shí)現(xiàn)數(shù)據(jù)可視化 268
9.3.1 Matplotlib中文亂碼問(wèn)題 269
9.3.2 Matplotlib繪制顯示不全 270
9.3.3 用Matplotlib生成圖表并進(jìn)行分析 271
9.4 用Wordcloud庫(kù)進(jìn)行詞云繪制 275
9.4.1 Wordcloud簡(jiǎn)介 275
9.4.2 Wordcloud構(gòu)造函數(shù)與常用方法 276
9.4.3 詞云繪制 277
9.5 小結(jié) 280
第10章 數(shù)據(jù)分析案例:某婚戀網(wǎng)站交友情況分析 281
10.1 數(shù)據(jù)爬取 281
10.2 安裝Jupyter Notebook 287
10.3 安裝pyecharts 288
10.4 數(shù)據(jù)分析 289
10.4.1 讀取CSV文件里的數(shù)據(jù) 289
10.4.2 分析身高 290
10.4.3 分析學(xué)歷 292
10.4.4 分析年齡 292
10.4.5 分析城市 294
10.4.6 分析交友宣言 294
10.5 小結(jié) 296