前言
隨著大數據和人工智慧的普及,Python 的地位也變得水漲船高,許多技術人員投身於Python 開發,其中網路爬蟲是Python 最為熱門的應用領域之一。在爬蟲領域,Python 可以說是處於霸主地位,Python 能解決爬蟲開發過程中所遇到的難題,開發速度快且支援非同步程式設計,大幅縮短了開發週期。此外,從事資料分析的工程師,為取得資料,很多時候也會用到網路爬蟲的相關技術,因此,Python 爬蟲程式設計已成為爬蟲工程師和資料分析師的必備技能。
✤ 本書結構
全書分28 章,各章內容概述如下:
第1 章介紹什麼是網路爬蟲、爬蟲的類型和原理、爬蟲搜索策略和爬蟲的合法性及開發流程。
第2 章說明爬蟲開發的基礎知識,包含HTTP 協定、請求標頭和Cookies 的作用、HTML 的版面配置結構、JavaScript 的介紹、JSON 的資料格式和Ajax 的原理。
第3 章介紹使用Chrome 開發工具分析爬取網站, 重點介紹開發工具的Elements 和Network 標籤的功能和使用方式,並透過開發工具分析QQ 網站。
第4 章主要介紹Fiddler 封包截取工具的原理和安裝設定,Fiddler 使用者介面的各個功能及使用方法。
第5 章說明Urllib 在Python 2 和Python 3 的變化及使用,包含發送請求、使用代理IP、Cookies 的讀寫、HTTP 憑證驗收和資料處理。
第6 ~ 8 章介紹Python 協力廠商函數庫Requests、Requests-Cache 爬蟲快取和Requests-HTML,包含發送請求、使用代理IP、Cookies 的讀寫、HTTP 憑證驗收和檔案下載與上傳、複雜的請求方式、快取的儲存機制、資料清洗以及Ajax 動態資料爬取等內容。
第9 章介紹網頁操控和資料爬取,重點說明Selenium 的安裝與使用,並透過實戰專案「百度自動答題」,說明Selenium 的使用。
第10 章介紹手機App 資料爬取,包含Appium 的原理與開發環境架設、連接Android 系統,並透過實戰專案「淘寶商品擷取」,介紹App 資料的爬取技巧。
第11 章介紹Splash、Mitmproxy 與Aiohttp 的安裝和使用,包含Splash 動態資料抓取、Mitmproxy 封包截取和Aiohttp 高平行處理抓取。
第12 章介紹驗證碼的種類和識別方法,包含OCR 的安裝和使用、驗證碼圖片處理和使用協力廠商平台識別驗證碼。
第13 章說明資料清洗的三種方法,包含字串操作(截取、尋找、分割和取代)、正規表示法的使用和協力廠商函數庫BeautifulSoup 的安裝以及使用。
第14 章說明如何將資料儲存到檔案,包含CSV、Excel 和Word 檔案的讀取和寫入方法。
第15 章介紹ORM 架構SQLAlchemy 的安裝及使用,實現關聯式資料庫持久化儲存資料。
第16 章說明非關聯式資料庫MongoDB 的操作,包含MongoDB 的安裝、原理和Python 實現MongoDB 的讀寫。
第17 ~ 21 章介紹5 個實戰專案,分別是:爬取51Job 應徵資訊、分散式爬蟲——QQ 音樂、12306 搶票爬蟲、微博爬取和微博爬蟲軟體的開發。
第22 章至第25 章介紹Scrapy 爬蟲架構,包含Scrapy 的執行機制、專案建立、各個元件的撰寫(Setting、Items、Item Pipelines、Spider)和檔案下載及Scrapy 中介軟體,並透過實戰專案「Scrapy+Selenium 爬取豆瓣電影評論」、「Scrapy+Splash 爬取B 站動漫資訊」和「Scrapy+Redis 分散式爬取貓眼排行榜」、「爬取鏈家房地產資訊」和「QQ 音樂全站爬取」,深入說明了Scrapy的應用和分散式爬蟲的撰寫技巧。
第26 章介紹爬蟲的上線部署,包含非架構式爬蟲和架構式爬蟲的部署技巧。
第27 章介紹常見的反爬蟲技術,並列出可行的反爬蟲解決方案。
第28 章介紹爬蟲架構的撰寫,學習如何自己動手撰寫一款爬蟲架構,以滿足特定業務場景的需求。
✤ 本書特色
循序漸進,有關面廣:本書站在初學者的角度,循序漸進地介紹使用Python 開發網路爬蟲的各種知識,內容由淺入深,幾乎涵蓋了目前網路爬蟲開發的各種熱門工具和前瞻性技術。
實戰專案豐富,擴充性強:本書採用大量的實戰專案說明,力求透過實際應用讓讀者更容易地掌握爬蟲開發技術,以應對業務需求。本書專案經過編者精心設計和挑選,根據實際開發經驗歸納而來,涵蓋了在實際開發中所遇到的各種問題。對於精選專案,盡可能做到步驟詳盡、結構清晰、分析深入淺出,而且案例的擴充性強,讀者可根據實際需求擴充開發。
從理論到實作,注重培養爬蟲開發思維:在說明過程中,不僅介紹理論知識,注重培養讀者的爬蟲開發思維,而且安排了綜合應用實例或小型應用程式,讓讀者能順利地將理論應用到實作中。
內容豐富,傾情分享:本書大部分內容都來自作者多年來的程式設計實作,操作性很強。值得關注的是,本書還介紹了爬蟲軟體和爬蟲架構的開發,供學有餘力的讀者擴充知識結構,提升開發技能。
✤ 繁體中文版說明
本書原作者為中國大陸人士,書中範例多為簡體中文網頁,為求全書內容完整,文中例圖多為簡體中文顯示,請讀者對照前後文閱讀。
✤ 原始程式碼下載
本書所有程式碼均在Python 3.6 下偵錯通過,原始程式碼Github 下載網址:github.com/xyjw/python-Reptile
如果在下載過程中遇到問題,可發送郵件至554301449@qq.com 獲得幫助,郵件標題為「實戰Python 網路爬蟲下載資源」。
✤ 技術服務
讀者在學習或工作的過程中,如果遇到實際問題,可以加入QQ 群93314951與筆者聯繫,筆者會在第一時間給予回覆。
✤ 適合讀者群
本書主要適合以下讀者閱讀:
■ Python 網路爬蟲初學者及在校學生。
■ Python 初級爬蟲工程師。
■ 從事資料抓取和分析的技術人員。
■ 學習 Python 程式設計的開發人員。
雖然筆者力求本書更臻完美,但由於功力所限,難免會出現錯誤,特別是實例中爬取的網站可能隨時更新,導致原始程式在執行過程中出現問題,歡迎讀者們和高手專家給予指正,筆者將十分感謝。
黃永祥