解析Python網(wǎng)絡(luò)爬蟲:核心技術(shù)、Scrapy框架、分布式爬蟲
定 價:52 元
叢書名:Python應(yīng)用編程叢書
- 作者:黑馬程序員 著
- 出版時間:2018/8/1
- ISBN:9787113246785
- 出 版 社:中國鐵道出版社
- 中圖法分類:TP311.561
- 頁碼:272
- 紙張:膠版紙
- 版次:1
- 開本:16開
網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則,自動請求萬維網(wǎng)網(wǎng)站并提取網(wǎng)絡(luò)數(shù)據(jù)的程序或腳本,它可以代替人力進行信息采集,能夠自動采集并高效地利用互聯(lián)網(wǎng)中的數(shù)據(jù),在市場的應(yīng)用需求中占據(jù)著重要的位置。
本書以Windows為主要平臺,系統(tǒng)全面地講解了Python網(wǎng)絡(luò)爬蟲的相關(guān)知識。主要內(nèi)容包括:初識爬蟲、爬蟲的實現(xiàn)原理和技術(shù)、網(wǎng)頁請求原理、爬取網(wǎng)頁數(shù)據(jù)、數(shù)據(jù)解析、并發(fā)下載、圖像識別與文字處理、存儲爬蟲數(shù)據(jù)、初識爬蟲框架Scrapy、Scrapy終端與核心組件、自動爬取網(wǎng)頁的爬蟲 CrawSpider、Scrapy-Redis分布式爬蟲。
本書適合作為高等院校計算機相關(guān)專業(yè)程序設(shè)計課程教材,也可作為Python網(wǎng)絡(luò)爬蟲的培訓(xùn)教材,以及廣大編程開發(fā)者的爬蟲入門級教材。
本書結(jié)合案例講解各知識點,幫助讀者掌握Python網(wǎng)絡(luò)爬蟲的核心技術(shù)。
網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則,自動請求萬維網(wǎng)網(wǎng)站并提取網(wǎng)絡(luò)數(shù)據(jù)的程序或腳本,它可以代替人力進行信息采集,能夠自動采集并高效地利用互聯(lián)網(wǎng)中的數(shù)據(jù),市場的應(yīng)用需求越來越大。
Python語言的一個重要領(lǐng)域就是爬蟲,通過Python編寫爬蟲簡單易學(xué),無須掌握太多底層的知識就可以快速上手,并且能快速地看到成果。對于要往爬蟲方向發(fā)展的讀者而言,學(xué)習(xí)Python爬蟲是一項不錯的選擇。
為什么學(xué)習(xí)本書
隨著大數(shù)據(jù)時代的到來,萬維網(wǎng)成為了大量信息的載體,如何有效地提取并利用這些信息成為一個巨大的挑戰(zhàn)。基于這種需求,爬蟲技術(shù)應(yīng)運而生,并迅速發(fā)展成為一門成熟的技術(shù)。本書站在初學(xué)者的角度,循序漸進地講解了學(xué)習(xí)網(wǎng)絡(luò)爬蟲必備的基礎(chǔ)知識,以及一些爬蟲框架的基本使用方法,以幫助讀者掌握爬蟲的相關(guān)技能,使其能夠獨立編寫自己的Python網(wǎng)絡(luò)爬蟲項目,從而勝任Python網(wǎng)絡(luò)爬蟲工程師相關(guān)崗位的工作。
本書在講解時,采用需求引入的方式介紹網(wǎng)絡(luò)爬蟲的相關(guān)技術(shù),同時針對多種技術(shù)進行對比講解,讓讀者深刻地理解這些技術(shù)的不同之處,以選擇適合自己的開發(fā)技巧,提高讀者的開發(fā)興趣和開發(fā)能力。
作為開發(fā)人員,要想真正掌握一門技術(shù),離不開多動手練習(xí),所以本書在講解各知識點的同時,不斷地增加案例,大限度地幫助讀者掌握Python網(wǎng)絡(luò)爬蟲的核心技術(shù)。
如何使用本書
本書基于Python 3,系統(tǒng)全面地講解了Python網(wǎng)絡(luò)爬蟲的基礎(chǔ)知識,全書共分13章,具體介紹如下:
第1、2章主要帶領(lǐng)大家認識網(wǎng)絡(luò)爬蟲,并且掌握爬蟲的實現(xiàn)原理。希望讀者能明白爬蟲具體是怎樣爬取網(wǎng)頁的,并對爬取過程中產(chǎn)生的一些問題有所了解,后期會對這些問題提供一些合理的解決方案。
第3~5章從網(wǎng)頁請求的原理入手,詳細講解了爬取和解析網(wǎng)頁數(shù)據(jù)的相關(guān)技術(shù),包括urllib庫的使用、正則表達式、XPath、Beautiful Soup和JSONPath,以及封裝了這些技術(shù)的Python模塊或庫。希望讀者在解析網(wǎng)頁數(shù)據(jù)時,可根據(jù)具體情況靈活選擇合理的技術(shù)進行運用。
第6~8章主要講解并發(fā)下載、動態(tài)網(wǎng)頁爬取、圖像識別和文字處理等內(nèi)容。希望讀者能夠體會到在爬蟲中運用多線程和協(xié)程的優(yōu)勢,掌握抓取動態(tài)網(wǎng)頁的一些技巧,并且會處理一些字符格式規(guī)范的圖像和簡單的驗證碼。
第9章主要介紹存儲爬蟲數(shù)據(jù),包括數(shù)據(jù)存儲簡介、MongoDB數(shù)據(jù)庫簡介、使用PyMongo庫存儲到數(shù)據(jù)庫等,并結(jié)合豆瓣電影的案例,講解了如何一步步從該網(wǎng)站中爬取、解析、存儲電影信息。通過本章的學(xué)習(xí),讀者將能夠簡單地操作MongoDB數(shù)據(jù)庫,并在以后的工作中靈活運用。
第10~12章主要介紹爬蟲框架Scrapy以及自動爬取網(wǎng)頁的爬蟲CrawlSpider的相關(guān)知識,通過對這幾章知識的學(xué)習(xí),讀者可以對Scrapy框架有基本認識,為后面Scrapy框架的深入學(xué)習(xí)做好鋪墊,同時,也可以掌握CrawlSpider類的使用技巧,在工作中具備獨當(dāng)一面的能力。
第13章圍繞Scrapy-Redis分布式爬蟲進行講解,包括Scrapy-Redis的完整架構(gòu)、運作流程、主要組件、基本使用,以及如何搭建Scrapy-Redis開發(fā)環(huán)境等,并結(jié)合百度百科的案例運用這些知識點。通過本章的學(xué)習(xí),讀者可在實際應(yīng)用中利用分布式爬蟲更高效地提取有用的數(shù)據(jù)。
在學(xué)習(xí)過程中,讀者一定要親自實踐本書中的案例代碼。另外,如果讀者在理解知識點的過程中遇到困難,建議不要糾結(jié)于某個地方,可以先往后學(xué)習(xí)。通常來講,通過逐漸深入的學(xué)習(xí),前面不懂和疑惑的知識點也就能夠理解了。在學(xué)習(xí)編程的過程中,一定要多動手實踐,如果在實踐過程中遇到問題,建議多思考,理清思路,認真分析問題發(fā)生的原因,并在問題解決后總結(jié)出經(jīng)驗。
致謝
本書的編寫和整理工作由傳智播客教育科技股份有限公司完成,主要參與人員有
呂春林、高美云、劉傳梅、王曉娟、毛兆軍等。全體人員在近一年的編寫過程中付出了很多辛勤的汗水,在此表示衷心的感謝。
意見反饋
盡管我們付出了大的努力,但書中仍難免會有不妥之處,歡迎各界專家和讀者朋友來信提出寶貴意見,我們將不勝感激。在閱讀本書時,發(fā)現(xiàn)任何問題或有不認同之處可以通過電子郵件與我們?nèi)〉寐?lián)系。
請發(fā)送電子郵件至:itcast_book@vip.sina.com。
黑馬程序員
2018年3月于北京
黑馬程序員:江蘇傳智播客教育科技股份有限公司(簡稱傳智播客)是一家專門致力于高素質(zhì)軟件開發(fā)人才培養(yǎng)的高科技公司。傳智播客致力于為企業(yè)優(yōu)選一流的人才的培訓(xùn)理念,經(jīng)過多年的教學(xué)探索及戰(zhàn)略布局,已向著綜合型職業(yè)教育集團發(fā)展。目前,傳智播客旗下已涵蓋傳智播客IT教育培訓(xùn)、黑馬程序員訓(xùn)練營及博學(xué)谷三大子品牌!昂隈R程序員”是傳智播客旗下高端IT教育品牌。
第1章 初識爬蟲 1
1.1 爬蟲產(chǎn)生背景 1
1.2 爬蟲的概念 2
1.3 爬蟲的用途 2
1.4 爬蟲的分類 3
1.4.1 通用爬蟲和聚焦爬蟲 3
1.4.2 累積式爬蟲和增量式爬蟲 4
1.4.3 表層爬蟲和深層爬蟲 4
小結(jié)5
習(xí)題5
第2章 爬蟲的實現(xiàn)原理和技術(shù) 6
2.1 爬蟲實現(xiàn)原理 6
2.1.1 通用爬蟲工作原理 6
2.1.2 聚焦爬蟲工作原理 8
2.2 爬蟲爬取網(wǎng)頁的詳細流程 9
2.3 通用爬蟲中網(wǎng)頁的分類 10
2.4 通用爬蟲相關(guān)網(wǎng)站文件 10
2.4.1 robots.txt文件 11
2.4.2 Sitemap.xml文件 12
2.5 防爬蟲應(yīng)對策略 12
2.6 選擇Python做爬蟲的原因 14
2.7 案例——使用八爪魚工具爬取
第一個網(wǎng)頁 14
小結(jié)21
習(xí)題21
第3章 網(wǎng)頁請求原理 23
3.1 瀏覽網(wǎng)頁過程 23
3.1.1 統(tǒng)一資源定位符 24
3.1.2 計算機域名系統(tǒng) 25
3.2 HTTP網(wǎng)絡(luò)請求原理 25
3.2.1 分析瀏覽器顯示完整網(wǎng)頁
的過程 26
3.2.2 客戶端HTTP請求格式 26
3.2.3 服務(wù)端HTTP響應(yīng)格式 30
3.3 HTTP抓包工具Fiddler 32
3.3.1 Fiddler工作原理 32
3.3.2 Fiddler下載安裝 32
3.3.3 Fiddler界面詳解 33
3.3.4 Fiddler爬取HTTPS設(shè)置 35
3.3.5 使用Fiddler捕獲Chrome
的會話 37
小結(jié)40
習(xí)題40
第4章 爬取網(wǎng)頁數(shù)據(jù) 42
4.1 urllib庫概述 42
4.2 快速使用urllib爬取網(wǎng)頁 43
4.2.1 快速爬取一個網(wǎng)頁 43
4.2.2 分析urlopen()方法 44
4.2.3 使用HTTPResponse對象 45
4.2.4 構(gòu)造Request對象 46
4.3 使用urllib實現(xiàn)數(shù)據(jù)傳輸 47
4.3.1 URL編碼轉(zhuǎn)換 47
4.3.2 處理GET請求 48
4.3.3 處理POST請求 49
4.4 添加特定Headers——請求偽裝 51
4.5 代理服務(wù)器 52
4.5.1 簡單的自定義opener 52
4.5.2 設(shè)置代理服務(wù)器 53
4.6 超時設(shè)置 54
4.7 常見的網(wǎng)絡(luò)異常 55
4.7.1 URLError異常和捕獲 55
4.7.2 HttpError異常和捕獲 55
4.8 更人性化的requests庫 56
4.8.1 requests庫概述 56
4.8.2 requests庫初體驗 56
4.8.3 發(fā)送請求 58
4.8.4 返回響應(yīng) 58
4.9 案例——使用urllib庫爬取百度
貼吧 59
小結(jié)61
習(xí)題61
第5章 數(shù)據(jù)解析 63
5.1 網(wǎng)頁數(shù)據(jù)和結(jié)構(gòu) 63
5.1.1 網(wǎng)頁數(shù)據(jù)格式 63
5.1.2 網(wǎng)頁結(jié)構(gòu) 64
5.2 數(shù)據(jù)解析技術(shù) 64
5.3 正則表達式 65
5.4 XPath與lxml解析庫 66
5.4.1 XPath概述 66
5.4.2 XPath語法 67
5.4.3 XPath開發(fā)工具 70
5.4.4 lxml庫概述 72
5.4.5 lxml庫的基本使用 75
5.5 Beautiful Soup 77
5.5.1 Beautiful Soup概述 77
5.5.2 構(gòu)建BeautifulSoup對象 78
5.5.3 通過操作方法進行解讀
搜索 80
5.5.4 通過CSS選擇器進行搜索 83
5.6 JSONPath與json模塊 85
5.6.1 JSON概述 85
5.6.2 JSON與XML比較 86
5.6.3 json模塊介紹 87
5.6.4 json模塊基本應(yīng)用 88
5.6.5 JSONPath簡介 90
5.6.6 JSONPath語法對比 90
5.6.7 案例——獲取拉勾網(wǎng)城市
列表 92
5.7 案例——解析騰訊社會招聘網(wǎng)站
的職位信息 94
5.7.1 明確爬蟲爬取目標(biāo) 95
5.7.2 分析要解析的數(shù)據(jù) 95
5.7.3 使用urllib庫爬取社招網(wǎng)
數(shù)據(jù) 96
5.7.4 使用正則、lxml、bs4解析
職位數(shù)據(jù) 98
5.7.5 將數(shù)據(jù)保存到文件中 103
小結(jié)104
習(xí)題104
第6章 并發(fā)下載 106
6.1 多線程爬蟲流程分析 106
6.2 使用queue模塊實現(xiàn)多線程
爬蟲 107
6.2.1 queue(隊列)模塊簡介 107
6.2.2 Queue類概述 109
6.3 協(xié)程實現(xiàn)并發(fā)爬取 110
6.3.1 協(xié)程爬蟲的流程分析 111
6.3.2 第三方庫gevent 111
6.4 案例——三種技術(shù)采集和解析
數(shù)據(jù)對比 112
6.4.1 單線程實現(xiàn) 112
6.4.2 多線程實現(xiàn) 114
6.4.3 協(xié)程實現(xiàn) 119
6.4.4 性能分析 122
小結(jié)123
習(xí)題123
第7章 爬取動態(tài)內(nèi)容 124
7.1 動態(tài)網(wǎng)頁介紹 124
7.2 selenium和PhantomJS概述 125
7.3 selenium和PhantomJS安裝
配置 126
7.4 selenium和PhantomJS的基本
應(yīng)用 128
7.4.1 入門操作 128
7.4.2 定位UI元素 133
7.4.3 鼠標(biāo)動作鏈 135
7.4.4 填充表單 136
7.4.5 彈窗處理 137
7.4.6 頁面切換 138
7.4.7 頁面前進和后退 138
7.4.8 獲取頁面Cookies 138
7.4.9 頁面等待 138
7.5 案例——模擬豆瓣網(wǎng)站登錄 140
小結(jié)142
習(xí)題142
第8章 圖像識別與文字處理 145
8.1 OCR技術(shù)概述 145
8.2 Tesseract引擎的下載和安裝 147
8.3 pytesseract和PIL庫概述 148
8.3.1 pytesseract庫概述 149
8.3.2 PIL庫概述 149
8.4 處理規(guī)范格式的文字 150
8.4.1 讀取圖像中格式規(guī)范的
文字 151
8.4.2 對圖片進行閾值過濾和
降噪處理 151
8.4.3 識別圖像的中文字符 153
8.5 處理驗證碼 154
8.5.1 驗證碼分類 154
8.5.2 簡單識別圖形驗證碼 155
8.6 案例——識別圖形驗證碼 156
小結(jié)157
習(xí)題157
第9章 存儲爬蟲數(shù)據(jù) 159
9.1 數(shù)據(jù)存儲概述 159
9.2 MongoDB數(shù)據(jù)庫概述 160
9.2.1 MongoDB的概念 160
9.2.2 Windows平臺安裝MongoDB數(shù)據(jù)庫 160
9.2.3 比較MongoDB和MySQL的術(shù)語 163
9.3 使用PyMongo庫存儲到
數(shù)據(jù)庫 165
9.3.1 PyMongo的概念 165
9.3.2 PyMongo的基本操作 165
9.4 案例——存儲網(wǎng)站的電影信息 169
9.4.1 分析待爬取的網(wǎng)頁 169
9.4.2 通過urllib爬取全部頁面 169
9.4.3 通過bs4選取數(shù)據(jù) 171
9.4.4 通過MongoDB存儲
電影信息 172
小結(jié)173
習(xí)題173
第10章 初識爬蟲框架Scrapy 175
10.1 常見爬蟲框架介紹 175
10.2 Scrapy框架的架構(gòu) 179
10.3 Scrapy框架的運作流程 180
10.4 安裝Scrapy框架 181
10.4.1 Windows 7系統(tǒng)下的
安裝 181
10.4.2 Linux(Ubuntu)系統(tǒng)下的
安裝 184
10.4.3 Mac OS系統(tǒng)下的安裝 185
10.5 Scrapy框架的基本操作 186
10.5.1 新建一個Scrapy項目 186
10.5.2 明確爬取目標(biāo) 187
10.5.3 制作Spiders爬取網(wǎng)頁 188
10.5.4 永久性存儲數(shù)據(jù) 193
10.5.5 Scrapy常用命令 193
小結(jié)194
習(xí)題194
第11章 Scrapy終端與核心組件 196
11.1 Scrapy shell——測試XPath
表達式 196
11.1.1 啟用Scrapy shell 196
11.1.2 使用Scrapy shell 197
11.1.3 Scrapy shell使用示例 198
11.2 Spiders——爬取和提取結(jié)構(gòu)化
數(shù)據(jù) 200
11.3 Item Pipeline——后期處理
數(shù)據(jù) 201
11.3.1 自定義Item Pipeline 201
11.3.2 完善之前的案例——
item寫入JSON文件 202
11.4 Downloader Middlewares——
防止反爬蟲 203
11.5 Settings——定制Scrapy
組件 206
11.6 案例——斗魚App爬蟲 208
11.6.1 使用Fiddler爬取手機
App的數(shù)據(jù) 208
11.6.2 分析JSON文件的內(nèi)容 210
11.6.3 使用Scrapy爬取數(shù)據(jù) 211
小結(jié)214
習(xí)題214
第12章 自動爬取網(wǎng)頁的爬蟲CrawlSpider 216
12.1 初識爬蟲類CrawlSpider 216
12.2 CrawlSpider類的工作原理 219
12.3 通過Rule類決定爬取規(guī)則 221
12.4 通過LinkExtractor類提取
鏈接 222
12.5 案例——使用CrawlSpider爬取
騰訊社會招聘網(wǎng)站 223
小結(jié)228
習(xí)題228
第13章 Scrapy-Redis分布式
爬蟲 230
13.1 Scrapy-Redis概述 230
13.2 Scrapy-Redis的完整架構(gòu) 231
13.3 Scrapy-Redis的運作流程 231
13.4 Scrapy-Redis的主要組件 232
13.5 搭建Scrapy-Redis開發(fā)環(huán)境 233
13.5.1 安裝Scrapy-Redis 233
13.5.2 安裝和啟動Redis
數(shù)據(jù)庫 234
13.5.3 修改配置文件 redis.conf 239
13.6 分布式的部署 242
13.6.1 分布式策略 242
13.6.2 測試Slave端遠程連接
Master端 243
13.7 Scrapy-Redis的基本使用 245
13.7.1 創(chuàng)建Scrapy項目 245
13.7.2 明確爬取目標(biāo) 246
13.7.3 制作Spider爬取網(wǎng)頁 247
13.7.4 執(zhí)行分布式爬蟲 249
13.7.5 使用多個管道存儲 250
13.7.6 處理Redis數(shù)據(jù)庫中的
數(shù)據(jù) 252
13.8 案例——使用分布式爬蟲爬取
百度百科網(wǎng)站 253
13.8.1 創(chuàng)建Scrapy項目 254
13.8.2 分析爬蟲的目標(biāo) 255
13.8.3 制作Spider爬取網(wǎng)頁 257
13.8.4 執(zhí)行爬蟲 260
小結(jié)262
習(xí)題262