《Python3網路爬蟲開發實戰(第二版)》內容介紹

VIP_CQCRE 發表於 2021-11-07
Python 爬蟲

這是「進擊的Coder」的第 505 篇分享

作者:崔慶才

大家好,本節首先來預告下即將出版的《Python3網路爬蟲開發實戰(第二版)》的主要內容。

由於我已經把書的總體的內容介紹寫在了書的前言部分,所以這篇文章我就把前言部分的內容直接摘錄一下啦,包括第二版相比第一版的改動內容,以及全書內容的介紹。

以下內容來自於《Python3網路爬蟲開發實戰(第二版)》前言。

前言

您好,我是崔慶才。

首先,非常高興我們能夠因此書與您初次或再次相會。為什麼會提到再次相會呢?因為這本書已經是第二版了。如果您曾經閱讀過本書第一版的內容,那麼請允許我再次對您的支援表示誠摯的感謝。

我是在 2015 年開始接觸網路爬蟲的,當時爬蟲其實並沒有這麼火,我當時覺得能夠把想要的資料抓取下來就是一件非常有成就感的事情,而且也可以順便熟悉 Python,一舉兩得。在學習期間,我將學到的內容做好總結,發表到我的部落格(https://cuiqingcai.com)上。隨著我發表的內容越來越多,部落格的瀏覽量也越來越多,很多讀者對我的博文給予了肯定的評價,這也給我的爬蟲學習之路增添了很多動力。後來有一天,圖靈的王編輯聯絡了我,問我有沒有意向寫一本爬蟲方面的書,我聽到之後充滿了欣喜和期待,這樣既能把自己學過的知識點做一個系統整理,又可以跟廣大爬蟲愛好者分享自己的學習經驗,還可以出版自己的作品,於是我很快就答應約稿了。一開始覺得寫書並不是一件那麼難的事,後來真正寫了才發現其中包含的艱辛。書相比部落格來說,用詞的嚴謹性要高很多,而且邏輯需要更加縝密,很多細節必須考慮得非常周全。前前後後寫了近一年的時間,審稿和修改又花費了將近半年的時間,一路走來甚是不易,不過最後看到書稿成型,覺得這一切都是值得的。

第一版書是在 2018 年出版的,出版後本書受到了不少讀者的支援和喜愛,真的非常感謝各位讀者的支援。有的讀者還特地告訴我,他看了我的書之後找到了一份不錯的爬蟲工作,聽到之後我真的感到非常開心,因為我的一些知識和經驗幫助到了他人。

但技術總是在不斷髮展和進步的,爬蟲技術也是一樣,它在爬蟲和反爬蟲不斷鬥爭的過程中也在不斷演進。比如現在越來越多的網頁採取了各種防護措施,比如前端程式碼的壓縮和混淆、API 的引數加密、WebDriver 的檢測,要做到高效的資料爬取,我們就需要懂得一些 JavaScript 逆向分析相關技術。App 也是一樣,App 的抓包防護、加殼保護、Native 化、風控檢測使得越來越多的 App 資料難以爬取,所以我們也不得不瞭解一些逆向相關技術,如 Xposed、Frida、IDA Pro 等工具的使用。除此之外,近幾年深度學習和人工智慧發展得也是如火如荼,所以爬蟲也可以和人工智慧結合起來,比如基於深度學習的驗證碼識別、網頁內容的智慧化解析和提取等技術我們也可以進行學習和了解。另外,一些大規模爬蟲的管理和運維技術也在不斷髮展,當前 Kubernetes、Docker、Prometheus 等雲原生技術也非常火爆,基於 Kubernetes 等雲原生技術的爬蟲管理和運維解決方案也已經很受青睞。然而,之前第一版書對以上提到的這些新興技術幾乎沒有提及。

除此之外,第一版書在講解資料爬取的過程中引用了很多案例和服務,比如貓眼電影網站、淘寶網站、代理服務網站,然而幾年過去了,有些案例網站和服務早已經改版或者停止維護,這就導致第一版書中的很多案例已經不能正常執行了。這其實是一個很大的問題,因為程式執行不通會大大降低學習的積極性和成就感,而且會浪費不少時間。另外,即使案例對應的爬蟲程式碼及時更新了,那我們也不知道這些案例網站和服務什麼時候會再次改版,因為這都是不可控的。所以,為了徹底解決這個問題,我花費了近半年的時間構建了一個爬蟲案例平臺(https://scrape.center),平臺包含了幾十個爬蟲案例,包括服務端渲染(SSR)網站、單頁面應用(SPA)網站、各類反爬網站、驗證碼網站、模擬登入網站、各類 App 等,覆蓋了現在爬蟲和反爬蟲相關的大多數技術,整個平臺都是我來維護的,書中幾乎所有案例都是從案例平臺來的,從而解決了頁面改版的問題。

所以,本書相比第一版來說,更新的內容主要如下:

  • 絕大多數都遷移到了自建的案例平臺,以後再也不用擔心案例有過期或改版問題。

  • 移除了原本第一章環境安裝的章節,將環境配置的部分全部彙總並遷移到案例平臺(https://setup.scrape.center)並在書中以外鏈的形式附上,以確保環境的配置和安裝說明能夠被及時更新。

  • 增加了一些新的請求庫、解析庫、儲存庫等的介紹,如 httpx、parsel、Elasticsearch 等庫的介紹。

  • 增加了非同步爬蟲的介紹,如協程的基本原理、aiohttp 的使用和爬取實戰介紹。

  • 增加了一些新興自動化工具的介紹,如 Pyppeteer、Playwright 的介紹。

  • 增加了深度學習相關內容,如圖形驗證碼、滑動驗證碼的識別方案。

  • 豐富了模擬登入章節的內容,如增加了 JWT 模擬登入的介紹和實戰、大規模賬號池的優化。

  • 增加了 JavaScript 逆向的章節,包括網站加密和混淆技術、JavaScript 逆向除錯技巧、JavaScript 的各種模擬執行方式、AST 還原混淆程式碼、WebAssembly 等相關技術的介紹。

  • 豐富了 App 自動化爬取技術的章節,如新興框架 Airtest 的介紹、手機群控和雲手機技術的介紹。

  • 增加了 Android 逆向章節,如反編譯、反彙編、Hook、脫殼、so 檔案分析和模擬執行等技術的介紹。

  • 增加了網頁智慧化解析章節,包括列表頁、詳情頁內容提取演算法和分類演算法。

  • 豐富了 Scrapy 相關章節的介紹,如 Pyppeteer 的對接、RabbitMQ 的對接、Prometheus 的對接等。

  • 增加了基於 Kubernetes、Docker、Prometheus、Grafana 等雲原生技術爬蟲管理和運維解決方案的介紹。

由於我本人工作、生活等各方面的原因,我的時間並不像寫第一版書時間那麼寬裕,所以第二版的爬蟲書的撰寫進度比較慢,這本書的內容幾乎都是我利用下班和週末的時間完成的,耗時將近兩年的時間。如今,第二版書終於跟讀者見面了!在撰寫期間我也收到過很多讀者的詢問和鼓勵,非常感謝各位讀者的支援和耐心等待。

希望本書能夠為您學習爬蟲提供幫助。

本書內容

本書一共分為 17 章,歸納如下。

  • 第 1 章介紹了學習爬蟲之前需要了解的基礎知識,如 HTTP、爬蟲、代理、網頁結構、多程式多執行緒等內容,對爬蟲沒有任何瞭解的讀者建議好好了解這一章的知識。

  • 第 2 章介紹了最基本的爬蟲操作,一般學習爬蟲都是從這一步學起的。這一章介紹了最基本的請求庫(urllib、requests、httpx)和正規表示式的基本用法。學會了這一章,就可以掌握最基本的爬蟲技術了。

  • 第 3 章介紹了頁解析庫的基本用法,包括 Beautiful Soup、XPath、pyquery、parsel 的基本使用方法,它們可以使得資訊的提取更加方便、快捷,是爬蟲必備利器。

  • 第 4 章介紹了資料儲存的常見形式及儲存操作,包括 TXT、JSON、CSV 各種檔案的儲存,以及關係型資料庫 MySQL 和非關係型資料庫 MongoDB、Redis 的基本存取操作,另外還介紹了 Elasticsearch 搜尋引擎儲存、訊息佇列 RabbitMQ 的用法。學會了這些內容,我們可以靈活方便地儲存爬取下來的資料。

  • 第 5 章介紹了 Ajax 資料爬取的過程,一些網頁的資料可能是通過 Ajax 請求 API 介面的方式載入的,用常規方法無法爬取,本章介紹了 Ajax 分析和爬取實戰案例。

  • 第 6 章介紹了非同步爬蟲的相關知識,如支援更高併發的協程的基本原理、aiohttp 的使用和實戰案例,學會了非同步,爬蟲的爬取效率將會被大大提高。

  • 第 7 章介紹了動態渲染頁面的爬取,現在越來越多的網站內容是經過 JavaScript 渲染得到的,而原始 HTML 文字可能不包含任何有效內容,而且渲染過程可能涉及某些 JavaScript 加密演算法,可以使用 Selenium、Splash、Pyppeteer、Playwright 等工具來實現模擬瀏覽器進行資料爬取的方法。

  • 第 8 章介紹了驗證碼的相關處理方法。驗證碼是網站反爬蟲的重要措施,我們可以通過本章瞭解到各類驗證碼的應對方案,包括圖形驗證碼、滑動驗證碼、點選驗證碼、手機驗證碼的處理方案,其中不乏有 OCR、OpenCV、深度學習、打碼平臺的介紹。

  • 第 9 章介紹了代理的使用方法,限制 IP 的訪問也是網站反爬蟲的重要措施。另外,我們也可以使用代理來偽裝爬蟲的真實 IP,使用代理可以有效解決這個問題。通過本章,我們瞭解到代理的使用方法,還學習了代理池的維護方法,以及 ADSL 撥號代理的使用方法。

  • 第 10 章介紹了模擬登入爬取的方法,某些網站需要登入才可以看到需要的內容,這時就需要用爬蟲模擬登入網站再進行爬取了。本章介紹了最基本的模擬登入方法,包括基於 Session + Cookie 的模擬登入和基於 JWT 的模擬登入。

  • 第 11 章介紹了 JavaScript 逆向相關知識,包括網站的混淆技術、JavaScript 逆向常用的除錯和 Hook 技術、JavaScript 模擬執行的各個方案,接著介紹了 AST 技術來進行 JavaScript 混淆程式碼的還原,另外也對 WebAssembly 技術進行了基本介紹。

  • 第 12 章介紹了 App 的爬取方法,包括基本的 Charles、mitmproxy 抓包軟體的使用。此外,還介紹了 mitmdump 對接 Python 指令碼進行實時抓取的方法以及使用 Appium、Airtest 完全模擬手機 App 的操作進行爬取的方法。

  • 第 13 章介紹了 Android 逆向的相關知識,包括反編譯工具 jadx、JEB 和常用的 Hook 框架 Xposed、Frida 等工具的使用,另外還介紹了 SSL Pining、脫殼、反彙編、so 檔案模擬執行等技術。

  • 第 14 章介紹了頁面智慧化解析相關的技術,比如新聞詳情頁面中標題、正文、作者等資訊以及新聞列表頁面中標題、連結等資訊的智慧化提取,另外還介紹瞭如何智慧化分辨詳情頁和列表頁。有了智慧解析技術,很多內容的提取過程就可以免去一些寫規則的困擾。

  • 第 15 章介紹了 Scrapy 爬蟲框架及用法。Scrapy 是目前使用最廣泛的爬蟲框架,本章介紹了它的基本架構、原理及各個元件的使用方法,另外還介紹了 Scrapy 對接 Selenium、Pyppeteer 等方法。

  • 第 16 章介紹了分散式爬蟲的基本原理及實現方法。為了提高爬取效率,分散式爬蟲是必不可少的,本章介紹了使用 Scrapy 和 Redis、RabbimtMQ 實現分散式爬蟲的方法。

  • 第 17 章介紹了分散式爬蟲的部署及管理方法。方便快速地完成爬蟲的分散式部署,可以節省開發者大量的時間。本章介紹了兩種管理方案,一種是基於 Scrapy、Scrapyd、Gerapy 的方案,另一種是基於 Kubernetes、Docker、Prometheus、Grafana 的方案。

好了,前言部分介紹完了。

目錄

下面貼一下全書的目錄,內容如下:

63e1010c1c715df2b379119e311b6c82.png 9749711b827cec104624e1b81707b728.png

目前進度

最後就是大家關心的書的進度問題了,我今天又問了編輯,正如上週說的,現在正在印前檢查階段,印前檢查一般是 7-10 個工作日,最快是 7 個工作日,上週已經過了 5 個工作日了,所以還剩 2 個工作日。印前檢查通過之後就做預算然後上架了。如果要京東、天貓預售的話,是必須要做預算的,但因為現在還沒做預算,所以現在還上架不了。整體來看,預計要趕雙十一預售有一定難度,不過就在這麼幾天了。

下面是我和編輯的對話截圖:

e65137ecce648ac7948ca7f4b2110ac3.png

總之,這所有的能加急的都加急了,編輯會一直盯著,感謝大家支援,很快,這書就要與大家見面啦!屆時我會第一時間在本公號公佈訊息的。

67fe6b125c6a0d366e759dfd35020b17.png

End

「進擊的Coder」專屬學習群已正式成立,搜尋「CQCcqc4」新增崔慶才的個人微信或者掃描下方二維碼拉您入群交流學習。

2ba03ce9e28a596d31243a0582276542.png

看完記得關注@進擊的Coder

及時收看更多好文

↓↓↓

崔慶才的「進擊的Coder」知識星球已正式成立,感興趣的可以檢視《我創辦了一個知識星球》瞭解更多內容,歡迎您的加入:

c6b3702252f2f2fdea49fcaf43afec6f.png

好文和朋友一起看~