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