《從零開始學Scrapy網路爬蟲》由張濤編寫。於2019年9月在機械工業出版社出版發行。
基本介紹
- 書名:從零開始學Scrapy網路爬蟲(視頻教學版)
- 作者:張濤
- 類別:計算機
- 出版社:機械工業出版社
- 出版時間:2019年9月
- 頁數:300 頁
- 定價:99 元
- 開本:16 開
- 裝幀:平裝
- ISBN:9787111634744
內容簡介,圖書目錄,作者簡介,
內容簡介
本書從零開始,循序漸進地介紹了目前最流行的網路爬蟲框架Scrapy。即使你沒有任何編程基礎,閱讀本書也不會有壓力,因為書中有針對性地介紹了Python編程技術。另外,本書在講解過程中以案例為導向,通過對案例的不斷疊代、最佳化,讓讀者加深對知識的理解,並通過14個項目案例,提高讀者解決實際問題的能力。
本書共13章。其中,第1~4章為基礎篇,介紹了Python基礎、網路爬蟲基礎、Scrapy框架及基本的爬蟲功能。第5~10章為進階篇,介紹了如何將爬蟲數據存儲於MySQL、MongoDB和Redis資料庫中;如何實現異步AJAX數據的爬取;如何使用Selenium和Splash實現動態網站的爬取;如何實現模擬登錄功能;如何突破反爬蟲技術,以及如何實現檔案和圖片的下載。第11~13章為高級篇,介紹了使用Scrapy-Redis實現分散式爬蟲;使用Scrapyd和Docker部署分散式爬蟲;使用Gerapy管理分散式爬蟲,並實現了一個搶票軟體的綜合項目。
本書適合爬蟲初學者、愛好者及高校相關專業的學生閱讀,也適合數據爬蟲工程師作為參考讀物,同時還適合各大院校和培訓機構作為教材使用。
圖書目錄
第1篇 基礎篇
第1章 Python基礎 2
1.1 Python簡介 2
1.1.1 Python簡史 2
1.1.2 搭建Python環境 3
1.1.3 安裝PyCharm集成開發環境 6
1.2 Python基本語法 7
1.2.1 基本數據類型和運算 7
1.2.2 運算符和表達式 8
1.2.3 條件判斷語句 9
1.2.4 循環語句 10
1.2.5 字元串 12
1.3 Python內置數據結構 14
1.3.1 列表 15
1.3.2 字典 16
1.3.3 元組 17
1.3.4 遍歷對象集合 17
1.4 Python模組化設計 18
1.4.1 函式 18
1.4.2 疊代器(iterator) 20
1.4.3 生成器(Generator) 20
1.4.4 類和對象 22
1.4.5 檔案與異常 23
1.5 本章小結 25
第2章 網路爬蟲基礎 26
2.1 HTTP基本原理 26
2.1.1 URL介紹 27
2.1.2 HTTP和HTTPS協定 27
2.1.3 HTTP請求(Request) 27
2.1.4 HTTP回響(Response) 30
2.2 網頁基礎 32
2.2.1 HTML文檔 33
2.2.2 網頁的結構 33
2.2.3 節點樹及節點之間的關係 34
2.3 使用XPath提取網頁信息 36
2.3.1 XPath介紹 36
2.3.2 XPath常用路徑表達式 36
2.3.3 XPath帶謂語的路徑表達式 39
2.4 本章小結 40
第3章 Scrapy框架介紹 41
3.1 網路爬蟲原理 41
3.1.1 爬蟲執行的流程 41
3.2 Scrapy框架結構及執行流程 42
3.2.1 Scrapy框架結構 42
3.2.2 Scrapy執行流程 44
3.3 Scrapy安裝 44
3.3.1 使用pip安裝Scrapy 44
3.3.2 常見安裝錯誤 45
3.3.3 驗證安裝 46
3.4 第一個網路爬蟲 46
3.4.1 需求分析 46
3.4.2 創建項目 47
3.4.3 分析頁面 48
3.4.4 實現Spider爬蟲功能 49
3.4.5 運行爬蟲 50
3.4.6 常見問題 51
3.5 本章小結 52
第4章 Scrapy網路爬蟲基礎 53
4.1 使用Spider提取數據 53
4.1.1 Spider組件介紹 53
4.1.2 重寫start_requests()方法 55
4.1.3 Request對象 57
4.1.4 使用選擇器提取數據 58
4.1.5 Response對象與XPath 59
4.1.6 Response對象與CSS 61
4.1.7 進一步了解Response對象 62
4.1.8 多頁數據的爬取 63
4.2 使用Item封裝數據 64
4.2.1 定義Item和Field 65
4.2.2 使用ItemLoader填充容器 66
4.3 使用Pipeline處理數據 69
4.3.1 Item Pipeline介紹 70
4.3.2 編寫自己的Item Pipeline 70
4.3.3 啟用Item Pipeline 71
4.3.4 多個Item Pipeline 71
4.3.5 保存為其他類型檔案 72
4.4 項目案例:爬取鏈家網二手房信息 75
4.4.1 項目需求 75
4.4.2 技術分析 76
4.4.3 代碼實現及解析 77
4.5 本章小結 85
第2篇 進階篇
第5章 資料庫存儲 88
5.1 MySQL資料庫 88
5.1.1 關係型資料庫概述 88
5.1.2 下載和安裝MySQL資料庫 88
5.1.3 資料庫管理工具Navicat 92
5.1.4 Python訪問MySQL資料庫 94
5.1.5 項目案例 97
5.2 MongoDB資料庫 100
5.2.1 NoSQL概述 100
5.2.2 MongoDB介紹 100
5.2.3 MongoDB的下載和安裝 101
5.2.4 Python訪問MongoDB資料庫 102
5.2.5 項目案例 108
5.3 Redis資料庫 111
5.3.1 Redis的下載和安裝 111
5.3.2 Python訪問Redis 113
5.3.3 項目案例 118
5.4 本章小結 121
第6章 JavaScript與AJAX數據爬取 122
6.1 JavaScript簡介 122
6.2 項目案例:爬取QQ音樂榜單歌曲 122
6.2.1 項目需求 122
6.2.2 技術分析 123
6.2.3 代碼實現及解析 126
6.2.4 更常見的動態網頁 128
6.3 AJAX簡介 129
6.4 項目案例:爬取豆瓣電影信息 130
6.4.1 項目需求 130
6.4.2 技術分析 130
6.4.3 代碼實現及解析 133
6.5 本章小結 135
第7章 動態渲染頁面的爬取 136
7.1 Selenium實現動態頁面爬取 136
7.1.1 Selenium安裝 136
7.1.2 Selenium簡單實現 137
7.1.3 Selenium語法 138
7.2 項目案例:爬取今日頭條熱點新聞 145
7.2.1 項目需求 145
7.2.2 技術分析 145
7.2.3 代碼實現及解析 147
7.3 Splash實現動態頁面爬取 151
7.3.1 Splash介紹 151
7.3.2 Splash環境搭建 152
7.3.3 Splash模組介紹 156
7.4 項目案例:爬取一號店中的iPhone手機信息 162
7.4.1 項目需求 162
7.4.2 技術分析 163
7.4.3 代碼實現及解析 165
7.5 本章小結 168
第8章 模擬登錄 169
8.1 模擬登錄解析 169
8.1.1 登錄過程解析 169
8.1.2 模擬登錄的實現 171
8.2 驗證碼識別 174
8.2.1 使用OCR識別驗證碼 174
8.2.2 處理複雜驗證碼 176
8.2.3 五花八門的驗證碼 177
8.3 Cookie自動登錄 177
8.3.1 Cookie介紹 178
8.3.2 獲取Cookie的庫—browsercookie 179
8.4 項目案例:爬取起點中文網某用戶的書架信息 180
8.4.1 項目需求 180
8.4.2 技術分析 180
8.4.3 代碼實現及解析 182
8.5 本章小結 184
第9章 突破反爬蟲技術 185
9.1 反爬蟲技術及突破措施 185
9.2 偽裝成不同的瀏覽器 187
9.2.1 UserAgentMiddleware中間件介紹 187
9.2.2 實現偽裝成隨機瀏覽器 188
9.2.3 更簡單的方法 191
9.3 使用HTTP代理伺服器 192
9.3.1 HTTP代理伺服器 192
9.3.2 獲取免費代理 193
9.3.3 實現隨機代理 199
9.4 本章小結 202
第10章 檔案和圖片下載 203
10.1 檔案下載 203
10.1.1 FilesPipeline執行流程 203
10.2 項目案例:爬取seaborn案例源檔案 204
10.2.1 項目需求 204
10.2.2 技術分析 206
10.2.3 代碼實現及解析 206
10.2.4 更多功能 211
10.3 圖片下載 212
10.4 項目案例:爬取攝圖網圖片 213
10.4.1 項目需求 213
10.4.2 技術分析 215
10.4.3 代碼實現及解析 215
10.5 本章小結 221
第3篇 高級篇
第11章 Scrapy-Redis實現分散式爬蟲 224
11.1 分散式爬蟲原理 224
11.2 Scrapy-Redis實現分散式爬蟲分析 225
11.2.1 實現分散式爬蟲思路 225
11.2.2 Scrapy-Redis代碼解析 226
11.2.3 分散式爬蟲功能配置 231
11.3 項目案例:分散式爬蟲爬取攝圖網圖片 233
11.3.1 技術分析 233
11.3.2 代碼實現及解析 234
11.4 本章小結 237
第12章 Scrapyd部署分散式爬蟲 238
12.1 使用Scrapyd部署分散式爬蟲 238
12.1.1 Scrapyd的安裝及運行 238
12.1.2 Scrapyd功能介紹 241
12.2 使用Scrapyd-Client批量部署 244
12.3 使用Docker部署分散式爬蟲 248
12.4 使用Gerapy管理分散式爬蟲 253
12.5 本章小結 258
第13章 綜合項目:搶票軟體的實現 259
13.1 項目需求 259
13.2 技術分析 262
13.3 項目實現及解析 263
13.3.1 搭建Scrapy項目框架 263
13.3.2 實現獲取站點信息的爬蟲 264
13.3.3 實現站點處理類 266
13.3.4 實現購票類 267
13.3.5 實現購票功能 280
13.3.6 運行項目 282
13.3.7 最佳化項目 282
13.4 本章小結 283
作者簡介
張濤 畢業於中國科學技術大學,獲碩士學位。目前在科大訊飛從事人工智慧教育培訓與研究。加入科大訊飛之前,曾經在知名日資企業任職研發經理,負責日本大型證券系統的設計與開發。有7年大學課程改革與教學經驗,主要研究方向為Python網路爬蟲、數據分析和機器學習。