在大數據的時代背景下,使用網絡爬蟲是獲取數據的一種重要手段,它可以減少我們生活中不必要的工作量。但是,千萬不能亂用,因為涉及數據安全法,建議大家了解相關資料,合理規劃爬蟲。 《網絡爬蟲技術與應用(微課版)》介紹爬蟲相關的常用工具及類庫,基于Web、App的采集及項目的部署,不使用框架的普通爬蟲腳本及使用兩種爬蟲框架的項目級爬蟲。在實際工作中,feapder、scrapy這兩個爬蟲框架比較熱門,企業使用得也比較多。掌握了爬蟲框架,會讓我們的開發工作事半功倍。《網絡爬蟲技術與應用(微課版)》主要包含requests、HTML、lxml、MySQL、JSON、JavaScript、Redis、jadx、pycharm、feappder、scrapy等內容,具體包含7個爬蟲案例:基于requests xpath采集網站文本數據、使用feapder爬蟲框架爬取房屋租售數據、使用分布式爬蟲采集金融數據、使用批次分布式爬蟲采集天氣數據、使用scrapy爬蟲爬取電影數據、App爬蟲的實踐、企業項目部署與應用。 《網絡爬蟲技術與應用(微課版)》入門門檻低,為便于上手操作,從所需技術和基礎理論出發,再到每個步驟都經過驗證,幫助讀者創建開發環境。《網絡爬蟲技術與應用(微課版)》既可以作為高等院校大數據及其相關專業學生的教材,又可以作為對數據類工作感興趣、有一定Python基礎的人員的參考書。
《網絡爬蟲技術與應用(微課版)》可作為大數據工程化處理與應用職業技能等級標準實訓與高職大數據技術專業核心課程教學的選用教材。《網絡爬蟲技術與應用(微課版)》從原生爬蟲的使用開始,以框架爬蟲、分布式爬蟲等不同類型爬蟲工具的應用作為項目,帶領學習者體驗當前大數據行業企業的爬蟲工程師常用工具與工作流程,以此掌握工程化的爬蟲應用能力。
隨著互聯網的發展,人們經常通過網絡獲取信息。在互聯網發展初期,人們主要通過瀏覽門戶網站的方式獲取所需信息,但是隨著Web的急速發展,用這種方式尋找所需的信息變得越來越困難。目前,人們大多通過搜索引擎獲取有用信息,因此搜索引擎技術的發展將直接影響人們獲取信息的速度和質量。
1994年,世界上第一個網絡檢索工具Web Crawler問世,目前較流行的搜索引擎有Baidu、Google、Yahoo、Infoseek、Inktomi、Teoma、Live Search等。出于保護商業機密的考慮,現在各個搜索引擎使用的Crawler 系統的技術內幕一般都不公開,現有的文獻資料也僅限于概要性介紹。隨著網絡信息資源呈指數級增長及網絡信息資源的動態變化,傳統的搜索引擎提供的信息檢索已無法滿足人們日益增長的對個性化服務的需求。以何種策略訪問網絡,提高搜索效率,已成為近年來專業搜索引擎網絡爬蟲研究的主要問題之一。
網絡爬蟲源自Spider(或Crawler、robots、wanderer)等的意譯。網絡爬蟲的定義有廣義和狹義之分。狹義的網絡爬蟲定義認為:網絡爬蟲是指利用標準的HTTP 協議,根據超級鏈接和Web 文檔檢索的方法遍歷萬維網信息空間的軟件程序。廣義的網絡爬蟲定義認為:所有能利用HTTP協議檢索Web 文檔的軟件都可稱為網絡爬蟲。
網絡爬蟲是一個功能強大的自動提取網頁的程序,它為搜索引擎從萬維網下載網頁,是搜索引擎的重要組成部分。它通過請求站點上的HTML文檔訪問某一站點。網絡爬蟲遍歷Web 空間,不斷地從一個站點移動到另一個站點,自動建立索引,并加入到網頁數據庫中。當它進入某個超級文本時,利用HTML 的標記結構來搜索信息并獲取指向其他超級文本的URL 地址,可以完全不依賴用戶干預實現網絡上的自動爬行和搜索。網絡爬蟲在搜索時往往采用一定的搜索策略。
那么,網絡爬蟲如何爬取數據呢?它又有哪些種類呢?本書分7個項目進行了詳細的介紹:基于requests xpath采集網站文本數據、使用feapder爬蟲框架爬取房屋租售數據、使用分布式爬蟲采集金融數據、使用批次分布式爬蟲采集天氣數據、使用Scrapy爬蟲爬取電影數據、App爬蟲的實踐、企業項目部署與應用。
本書由鄭淑暉、張正球擔任主編,其中鄭淑暉負責項目一至項目四的編寫,張正球負責項目五至項目七的編寫。
由于時間緊迫和編者的水平所限,書中難免有疏漏之處,敬請讀者批評指正。
編 者
鄭淑暉,北京信息職業技術學院人工智能學院學院大數據專業負責人,副教授。承擔專業多門核心課程的教學工作。參與2021年北京市職業教育教學成果獎項目基于標準引領 智能測評的教師職業能力提升模式研究與實踐(一等獎);主持校級課題基于粒子群算法改進的數據優化策略及應用研究(三等獎)。曾獲北京市職業院校信息技術類專業《基于工作過程導向的課程》設計與實踐競賽專業組二等獎、校互動教學一等獎、青年教師課堂教學能力競賽學院二等獎、信息化課程教學大賽二等獎。在國內外公開發行刊物、EI檢索及核心刊物發表多篇論文,參與多本教材的編寫,參加企業實踐鍛煉,有豐富的教學和項目開發經驗。
項目一 基于requests xpath 采集網站文本數據 1
任務一 開發環境的準備和搭建 1
職業能力目標 1
任務描述與要求 2
知識儲備 2
一、Python和PyCharm程序編輯器 2
二、原生類庫requests 10
三、原生類庫lxml 12
四、原生類庫pymysql 12
任務計劃與決策 13
任務實施 13
任務檢查與評價 20
任務小結 21
任務拓展 21
任務二 爬蟲程序實踐 21
職業能力目標 21
任務描述與要求 21
知識儲備 21
一、認識HTML 21
二、網頁代碼結構 23
三、通過瀏覽器查看網頁源代碼 23
任務計劃與決策 24
任務實施 24
任務檢查與評價 32
任務小結 32
任務拓展 33
項目二 使用feapder爬蟲框架爬取房屋租售數據 35
任務一 開發環境的準備和搭建 35
職業能力目標 35
任務描述與要求 36
知識儲備 36
任務計劃與決策 36
任務實施 37
任務檢查與評價 42
任務小結 42
任務拓展 43
任務二 爬蟲程序實踐 43
職業能力目標 43
任務描述與要求 43
知識儲備 43
任務計劃與決策 46
任務實施 46
任務檢查與評價 56
任務小結 57
任務拓展 57
項目三 使用分布式爬蟲采集金融數據 59
任務一 開發環境的準備和搭建 59
職業能力目標 59
任務描述與要求 59
知識儲備 60
一、redis 60
二、Another Redis Desktop Manager 63
任務計劃與決策 66
任務實施 66
任務檢查與評價 71
任務小結 72
任務拓展 72
任務二 Spider爬蟲程序實踐 72
職業能力目標 72
任務描述與要求 72
知識儲備 72
一、分布式爬蟲Spider 72
二、Spider進階 74
三、Spider的方法 76
任務計劃與決策 78
任務實施 78
任務檢查與評價 90
任務小結 91
任務拓展 91
項目四 使用批次分布式爬蟲采集天氣數據 93
任務一 學習feapder架構設計 93
職業能力目標 93
任務描述與要求 93
知識儲備 94
任務計劃與決策 95
任務實施 95
任務檢查與評價 100
任務小結 101
任務拓展 101
任務二 爬蟲程序實踐 102
職業能力目標 102
任務描述與要求 102
知識儲備 102
任務計劃與決策 106
任務實施 106
任務檢查與評價 121
任務小結 122
任務拓展 122
項目五 使用Scrapy爬蟲爬取電影數據 125
任務一 開發環境的準備和搭建 125
職業能力目標 125
任務描述與要求 126
知識儲備 126
一、Scrapy 126
二、JavaScript 128
任務計劃與決策 129
任務實施 129
任務檢查與評價 132
任務小結 133
任務拓展 133
任務二 爬蟲程序實踐 133
職業能力目標 133
任務描述與要求 133
知識儲備 133
一、JSON簡介 133
二、JSON使用場景 134
三、在Python中使用JSON 136
任務計劃與決策 137
任務實施 138
任務檢查與評價 153
任務小結 154
任務拓展 154
項目六 App爬蟲的實踐 157
任務一 開發環境的準備和搭建 157
職業能力目標 157
任務描述與要求 157
知識儲備 158
一、Charles 158
二、Jadx 159
任務計劃與決策 159
任務實施 159
任務檢查與評價 164
任務小結 165
任務拓展 165
任務二 爬蟲程序實踐 166
職業能力目標 166
任務描述與要求 166
知識儲備 166
任務計劃與決策 166
任務實施 166
任務檢查與評價 174
任務小結 175
任務拓展 175
項目七 企業項目部署與應用 179
任務一 開發環境的準備和搭建 179
職業能力目標 179
任務描述與要求 180
知識儲備 180
一、Linux系統 180
二、Docker簡介 181
三、FEAPLAT簡介 182
任務計劃與決策 183
任務實施 183
任務檢查與評價 187
任務小結 188
任務拓展 188
任務二 爬蟲管理和部署 188
職業能力目標 188
任務描述與要求 188
知識儲備 189
一、使用說明 189
二、項目運行 189
三、示例演示 189
任務計劃與決策 191
任務實施 191
任務檢查與評價 196
任務小結 197
任務拓展 197