發表於2024-12-25
案例豐富,注重實戰
博客文章過百萬的靜覓大神力作
全麵介紹瞭數據采集、數據存儲、動態網站爬取、App爬取、驗證碼破解、模擬登錄、代理使用、爬蟲框架、分布式爬取等知識
涉及的庫或工具:urllib、requests、Beautiful Soup、XPath、pyquery、redis-py、PyMongo、PyMySQL、Selenium、Splash、Charles、mitmproxy、mitmdump、Appium、pyspider、Scrapy、Scrapy-Redis、Scrapy-Splash、Docker、Bloom Filter、Gerapy等
本書介紹瞭如何利用Python 3開發網絡爬蟲,書中首先介紹瞭環境配置和基礎知識,然後討論瞭urllib、requests、正則錶達式、Beautiful Soup、XPath、pyquery、數據存儲、Ajax數據爬取等內容,接著通過多個案例介紹瞭不同場景下如何實現數據爬取,最後介紹瞭pyspider框架、Scrapy框架和分布式爬蟲。
本書適閤Python程序員閱讀。
崔慶纔
北京航空航天大學碩士,靜覓博客(https://cuiqingcai.com/)博主,爬蟲博文訪問量已過百萬,喜歡鑽研,熱愛生活,樂於分享。歡迎關注個人微信公眾號“進擊的Coder”。
專業評論:
在互聯網軟件開發工程師的分類中,爬蟲工程師是非常重要的。爬蟲工作往往是一個公司核心業務開展的基礎,數據抓取下來,纔有後續的加工處理和最終展現。此時數據的抓取規模、穩定性、實時性、準確性就顯得非常重要。早期的互聯網充分開放互聯,數據獲取的難度很小。隨著各大公司對數據資産日益看重,反爬水平也在不斷提高,各種新技術不斷給爬蟲軟件提齣新的課題。本書作者對爬蟲的各個領域都有深刻研究,書中探討瞭Ajax數據的抓取、動態渲染頁麵的抓取、驗證碼識彆、模擬登錄等高級話題,同時也結閤移動互聯網的特點探討瞭App的抓取等。更重要的是,本書提供瞭大量源碼,可以幫助讀者更好地理解相關內容。強烈推薦給各位技術愛好者閱讀!
——梁斌,八友科技總經理
數據既是當今大數據分析的前提,也是各種人工智能應用場景的基礎。得數據者得天下,會爬蟲者走遍天下也不怕!一冊在手,讓小白到老司機都能有所收獲!
——李舟軍,北京航空航天大學教授,博士生導師
本書從爬蟲入門到分布式抓取,詳細介紹瞭爬蟲技術的各個要點,並針對不同的場景提齣瞭對應的解決方案。另外,書中通過大量的實例來幫助讀者更好地學習爬蟲技術,通俗易懂,乾貨滿滿。強烈推薦給大傢!
——宋睿華,微軟小冰首席科學傢
有人說中國互聯網的帶寬全給各種爬蟲占據瞭,這說明網絡爬蟲的重要性以及中國互聯網數據封閉壟斷的現狀。爬是一種能力,爬是為瞭不爬。
——施水纔,北京拓爾思信息技術股份有限公司總裁
第1章 開發環境配置 1
1.1 Python 3的安裝 1
1.1.1 Windows下的安裝 1
1.1.2 Linux下的安裝 6
1.1.3 Mac下的安裝 8
1.2 請求庫的安裝 10
1.2.1 requests的安裝 10
1.2.2 Selenium的安裝 11
1.2.3 ChromeDriver的安裝 12
1.2.4 GeckoDriver的安裝 15
1.2.5 PhantomJS的安裝 17
1.2.6 aiohttp的安裝 18
1.3 解析庫的安裝 19
1.3.1 lxml的安裝 19
1.3.2 Beautiful Soup的安裝 21
1.3.3 pyquery的安裝 22
1.3.4 tesserocr的安裝 22
1.4 數據庫的安裝 26
1.4.1 MySQL的安裝 27
1.4.2 MongoDB的安裝 29
1.4.3 Redis的安裝 36
1.5 存儲庫的安裝 39
1.5.1 PyMySQL的安裝 39
1.5.2 PyMongo的安裝 39
1.5.3 redis-py的安裝 40
1.5.4 RedisDump的安裝 40
1.6 Web庫的安裝 41
1.6.1 Flask的安裝 41
1.6.2 Tornado的安裝 42
1.7 App爬取相關庫的安裝 43
1.7.1 Charles的安裝 44
1.7.2 mitmproxy的安裝 50
1.7.3 Appium的安裝 55
1.8 爬蟲框架的安裝 59
1.8.1 pyspider的安裝 59
1.8.2 Scrapy的安裝 61
1.8.3 Scrapy-Splash的安裝 65
1.8.4 Scrapy-Redis的安裝 66
1.9 部署相關庫的安裝 67
1.9.1 Docker的安裝 67
1.9.2 Scrapyd的安裝 71
1.9.3 Scrapyd-Client的安裝 74
1.9.4 Scrapyd API的安裝 75
1.9.5 Scrapyrt的安裝 75
1.9.6 Gerapy的安裝 76
第2章 爬蟲基礎 77
2.1 HTTP基本原理 77
2.1.1 URI和URL 77
2.1.2 超文本 78
2.1.3 HTTP和HTTPS 78
2.1.4 HTTP請求過程 80
2.1.5 請求 82
2.1.6 響應 84
2.2 網頁基礎 87
2.2.1 網頁的組成 87
2.2.2 網頁的結構 88
2.2.3 節點樹及節點間的關係 90
2.2.4 選擇器 91
2.3 爬蟲的基本原理 93
2.3.1 爬蟲概述 93
2.3.2 能抓怎樣的數據 94
2.3.3 JavaScript渲染頁麵 94
2.4 會話和Cookies 95
2.4.1 靜態網頁和動態網頁 95
2.4.2 無狀態HTTP 96
2.4.3 常見誤區 98
2.5 代理的基本原理 99
2.5.1 基本原理 99
2.5.2 代理的作用 99
2.5.3 爬蟲代理 100
2.5.4 代理分類 100
2.5.5 常見代理設置 101
第3章 基本庫的使用 102
3.1 使用urllib 102
3.1.1 發送請求 102
3.1.2 處理異常 112
3.1.3 解析鏈接 114
3.1.4 分析Robots協議 119
3.2 使用requests 122
3.2.1 基本用法 122
3.2.2 高級用法 130
3.3 正則錶達式 139
3.4 抓取貓眼電影排行 150
第4章 解析庫的使用 158
4.1 使用XPath 158
4.2 使用Beautiful Soup 168
4.3 使用pyquery 184
第5章 數據存儲 197
5.1 文件存儲 197
5.1.1 TXT文本存儲 197
5.1.2 JSON文件存儲 199
5.1.3 CSV文件存儲 203
5.2 關係型數據庫存儲 207
5.2.1 MySQL的存儲 207
5.3 非關係型數據庫存儲 213
5.3.1 MongoDB存儲 214
5.3.2 Redis存儲 221
第6章 Ajax數據爬取 232
6.1 什麼是Ajax 232
6.2 Ajax分析方法 234
6.3 Ajax結果提取 238
6.4 分析Ajax爬取今日頭條街拍美圖 242
第7章 動態渲染頁麵爬取 249
7.1 Selenium的使用 249
7.2 Splash的使用 262
7.3 Splash負載均衡配置 286
7.4 使用Selenium爬取淘寶商品 289
第8章 驗證碼的識彆 298
8.1 圖形驗證碼的識彆 298
8.2 極驗滑動驗證碼的識彆 301
8.3 點觸驗證碼的識彆 311
8.4 微博宮格驗證碼的識彆 318
第9章 代理的使用 326
9.1 代理的設置 326
9.2 代理池的維護 333
9.3 付費代理的使用 347
9.4 ADSL撥號代理 351
9.5 使用代理爬取微信公眾號文章 364
第10章 模擬登錄 379
10.1 模擬登錄並爬取GitHub 379
10.2 Cookies池的搭建 385
第11章 App的爬取 398
11.1 Charles的使用 398
11.2 mitmproxy的使用 405
11.3 mitmdump爬取“得到”App電子書
信息 417
11.4 Appium的基本使用 423
11.5 Appium爬取微信朋友圈 433
11.6 Appium+mitmdump爬取京東商品 437
第12章 pyspider框架的使用 443
12.1 pyspider框架介紹 443
12.2 pyspider的基本使用 445
12.3 pyspider用法詳解 459
第13章 Scrapy框架的使用 468
13.1 Scrapy框架介紹 468
13.2 Scrapy入門 470
13.3 Selector的用法 480
13.4 Spider的用法 486
13.5 Downloader Middleware的用法 487
13.6 Spider Middleware的用法 494
13.7 Item Pipeline的用法 496
13.8 Scrapy對接Selenium 506
13.9 Scrapy對接Splash 511
13.10 Scrapy通用爬蟲 516
13.11 Scrapyrt的使用 533
13.12 Scrapy對接Docker 536
13.13 Scrapy爬取新浪微博 541
第14章 分布式爬蟲 555
14.1 分布式爬蟲原理 555
14.2 Scrapy-Redis源碼解析 558
14.3 Scrapy分布式實現 564
14.4 Bloom Filter的對接 569
第15章 分布式爬蟲的部署 577
15.1 Scrapyd分布式部署 577
15.2 Scrapyd-Client的使用 582
15.3 Scrapyd對接Docker 583
15.4 Scrapyd批量部署 586
15.5 Gerapy分布式管理 590
前 言
為什麼寫這本書
在這個大數據時代,尤其是人工智能浪潮興起的時代,不論是工程領域還是研究領域,數據已經成為必不可少的一部分,而數據的獲取很大程度上依賴於爬蟲的爬取,所以爬蟲也逐漸變得火爆起來。我是在2015年開始接觸爬蟲的,當時爬蟲其實並沒有這麼火,我當時覺得能夠把想要的數據抓取下來就是一件非常有成就感的事情,而且也可以順便熟悉Python,一舉兩得。在學習期間,我將學到的內容做好總結,發錶到博客上。隨著我發錶的內容越來越多,博客的瀏覽量也越來越多,很多讀者對我的博文給予瞭肯定的評價,這也給我的爬蟲學習之路增添瞭很多動力。在學習的過程中,睏難其實還是非常多的,最早學習時使用的是Python 2,當時因為編碼問題搞得焦頭爛額。另外,那時候相關的中文資料還比較少,很多情況下還得自己慢慢去啃官方文檔,走瞭不少彎路。隨著學習的進行,我發現爬蟲這部分內容涉及的知識點太多、太雜瞭。網頁的結構、渲染方式不同,我們就得換不同的爬取方案來進行針對性的爬取。另外,網頁信息的提取、爬取結果的保存也有五花八門的方案。隨著移動互聯網的興起,App的爬取也成瞭一個熱點,而為瞭提高爬取速度又需要考慮並行爬取、分布式爬取方麵的內容,爬蟲的通用性、易用性、架構都需要好好優化。這麼多雜糅的知識點對於一個爬蟲初學者來說,學習的挑戰性會非常高,同時學習過程中大傢或許也會走我之前走過的彎路,浪費很多時間。後來有一天,圖靈的王編輯聯係瞭我,問我有沒有意嚮寫一本爬蟲方麵的書,我聽到之後充滿瞭欣喜和期待,這樣既能把自己學過的知識點做一個係統整理,又可以跟廣大爬蟲愛好者分享自己的學習經驗,還可以齣版自己的作品,於是我很快就答應約稿瞭。
一開始覺得寫書並不是一件那麼難的事,後來真正寫瞭纔發現其中包含的艱辛。書相比博客來說,用詞的嚴謹性要高很多,而且邏輯需要更加縝密,很多細節必須考慮得非常周全。前前後後寫瞭大半年的時間,審稿和修改又花費瞭幾個月的時間,一路走來甚是不易,不過最後看到書稿成型,覺得這一切都是值得的。在書中,我把我學習爬蟲的很多經驗都寫瞭進去。環境配置是學習的第一步,環境配置不好,其他工作就沒法開展,甚至可能很大程度上打擊學習的積極性,所以我在第1章中著重介紹瞭環境的配置過程。而因為操作係統的不同,環境配置過程又各有不同,所以我把每個係統(Windows、Linux、Mac)的環境配置過程都親自實踐瞭一遍,並梳理記錄下來,希望為各位讀者在環境配置時多提供一些幫助。後麵我又針對爬蟲網站的不同情形分門彆類地進行瞭說明,如Ajax分析爬取、動態渲染頁麵爬取、App爬取、使用代理爬取、模擬登錄爬取等知識,每個知識點我都選取瞭一些典型案例來說明,以便於讀者更好地理解整個過程和用法。為瞭提高代碼編寫和爬取的效率,還可以使用一些爬蟲框架輔助爬取,所以本書後麵又介紹瞭兩個流行的爬蟲框架的用法,最後又介紹瞭一些分布式爬蟲及部署方麵的知識。總體來說,本書根據我個人覺得比較理想的學習路徑介紹瞭學習爬蟲的相關知識,並通過一些實戰案例幫助讀者更好地理解其中的原理。
本書內容
本書一共分為15章,歸納如下。
? 第1章介紹瞭本書所涉及的所有環境的配置詳細流程,兼顧Windows、Linux、Mac三大平颱。本章不用逐節閱讀,需要的時候查閱即可。
? 第2章介紹瞭學習爬蟲之前需要瞭解的基礎知識,如HTTP、爬蟲、代理的基本原理、網頁基本結構等內容,對爬蟲沒有任何瞭解的讀者建議好好瞭解這一章的知識。
? 第3章介紹瞭最基本的爬蟲操作,一般學習爬蟲都是從這一步學起的。這一章介紹瞭最基本的兩個請求庫(urllib和requests)和正則錶達式的基本用法。學會瞭這一章,就可以掌握最基本的爬蟲技術瞭。
? 第4章介紹瞭頁解析庫的基本用法,包括Beautiful Soup、XPath、pyquery的基本使用方法,它們可以使得信息的提取更加方便、快捷,是爬蟲必備利器。
? 第5章介紹瞭數據存儲的常見形式及存儲操作,包括TXT、JSON、CSV各種文件的存儲,以及關係型數據庫MySQL和非關係型數據庫MongoDB、Redis存儲的基本存儲操作。學會瞭這些內容,我們可以靈活方便地保存爬取下來的數據。
? 第6章介紹瞭Ajax數據爬取的過程,一些網頁的數據可能是通過Ajax請求API接口的方式加載的,用常規方法無法爬取,本章介紹瞭使用Ajax進行數據爬取的方法。
? 第7章介紹瞭動態渲染頁麵的爬取,現在越來越多的網站內容是經過JavaScript渲染得到的,而原始HTML文本可能不包含任何有效內容,而且渲染過程可能涉及某些JavaScript加密算法,可以使用Selenium、Splash等工具來實現模擬瀏覽器進行數據爬取的方法。
? 第8章介紹瞭驗證碼的相關處理方法。驗證碼是網站反爬蟲的重要措施,我們可以通過本章瞭解到各類驗證碼的應對方案,包括圖形驗證碼、極驗驗證碼、點觸驗證碼、微博宮格驗證碼的識彆。
? 第9章介紹瞭代理的使用方法,限製IP的訪問也是網站反爬蟲的重要措施。另外,我們也可以使用代理來僞裝爬蟲的真實IP,使用代理可以有效解決這個問題。通過本章,我們瞭解到代理的使用方法,還學習瞭代理池的維護方法,以及ADSL撥號代理的使用方法。
? 第10章介紹瞭模擬登錄爬取的方法,某些網站需要登錄纔可以看到需要的內容,這時就需要用爬蟲模擬登錄網站再進行爬取瞭。本章介紹瞭最基本的模擬登錄方法以及維護一個Cookies池的方法。
? 第11章介紹瞭App的爬取方法,包括基本的Charles、mitmproxy抓包軟件的使用。此外,還介紹瞭mitmdump對接Python腳本進行實時抓取的方法,以及使用Appium完全模擬手機App的操作進行爬取的方法。
? 第12章介紹瞭pyspider爬蟲框架及用法,該框架簡潔易用、功能強大,可以節省大量開發爬蟲的時間。本章結閤案例介紹瞭使用該框架進行爬蟲開發的方法。
? 第13章介紹瞭Scrapy爬蟲框架及用法。Scrapy是目前使用最廣泛的爬蟲框架,本章介紹瞭它的基本架構、原理及各個組件的使用方法,另外還介紹瞭Scrapy通用化配置、對接Docker的一些方法。
? 第14章介紹瞭分布式爬蟲的基本原理及實現方法。為瞭提高爬取效率,分布式爬蟲是必不可少的,本章介紹瞭使用Scrapy和Redis實現分布式爬蟲的方法。
? 第15章介紹瞭分布式爬蟲的部署及管理方法。方便快速地完成爬蟲的分布式部署,可以節省開發者大量的時間。本章結閤Scrapy、Scrapyd、Docker、Gerapy等工具介紹瞭分布式爬蟲部署和管理的實現。
緻謝
感謝我的父母、導師,沒有他們創造的環境,我不可能完成此書的寫作。
感謝我的女朋友李園,在我寫書期間給瞭我很多的支持和鼓勵。同時她還主導設計瞭本書的封麵,正是她的理解和付齣纔使本書得以完善。
感謝在我學習過程中與我探討技術的各位朋友,特彆感謝汪海洋先生在我初學爬蟲過程中給我提供的指導,特彆感謝崔弦毅、苟桃、時猛先生在我寫書過程中為我提供的思路和建議。
感謝為本書撰寫推薦語的李舟軍老師、宋睿華老師、梁斌老師、施水纔老師(排名不分先後),感謝你們對本書的支持和推薦。
Python 3網絡爬蟲開發實戰 下載 mobi epub pdf txt 電子書 格式
Python 3網絡爬蟲開發實戰 下載 mobi pdf epub txt 電子書 格式 2024
Python 3網絡爬蟲開發實戰 下載 mobi epub pdf 電子書寫得非常詳細,值得購買一看。
評分工作後繼續修煉 書不錯
評分關注好久的一本書
評分東西不錯,下次繼續購買
評分工作後繼續修煉 書不錯
評分也支持國産的書,加油,最少大傢都用中文思維
評分這本書是我轉行用的,介紹細緻入微,簡直是手把手教瞭
評分數據庫,爬蟲,之間的交互,各個方麵均有講解,值得推薦的一本書。
評分看作者博客評價買的
Python 3網絡爬蟲開發實戰 mobi epub pdf txt 電子書 格式下載 2024