更新時間:2020-03-31 14:21:08 來源:動力節點 瀏覽2797次
作為網絡爬蟲的入門采用Java開發語言,內容涵蓋了網絡爬蟲的原理以及開發邏輯,Java網絡爬蟲基礎知識,網絡抓包介紹,jsoup的介紹與使用,HttpClient的介紹與使用等內容。本課程在介紹網絡爬蟲基本原理的同時,注重具體的代碼實現,加深讀者對爬蟲的理解,加強讀者的實戰能力。
網絡爬蟲技術最廣泛的應用是在搜索引擎中,如百度、Google、Bing等,它完成了搜索過程中的最關鍵的步驟,即網頁內容的抓取。下圖為簡單搜索引擎原理圖。
網絡爬蟲的作用,我總結為以下幾點:
輿情分析:企業或政府利用爬取的數據,采用數據挖掘的相關方法,發掘用戶討論的內容、實行事件監測、輿情引導等。
企業的用戶分析:企業利用網絡爬蟲,采集用戶對其企業或商品的看法、觀點以及態度,進而分析用戶的需求、自身產品的優劣勢、顧客抱怨等。
科研工作者的必備技術:現有很多研究都以網絡大數據為基礎,而采集網絡大數據的必備技術便是網絡爬蟲。利用網絡爬蟲技術采集的數據可用于研究產品個性化推薦、文本挖掘、用戶行為模式挖掘等。
網絡爬蟲涉及的領域包括:
網絡爬蟲的基本概念
網絡爬蟲(WebCrawler),又稱為網絡蜘蛛(WebSpider)或Web信息采集器,是一種按照一定規則,自動抓取或下載網絡信息的計算機程序或自動化腳本,是目前搜索引擎的重要組成部分。
狹義上理解:利用標準的HTTP協議,根據網絡超鏈接(如https://www.baidu.com/)和Web文檔檢索的方法(如深度優先)遍歷萬維網信息空間的軟件程序。
功能上理解:確定待爬的URL隊列,獲取每個URL對應的網頁內容(如HTML/JSON),解析網頁內容,并存儲對應的數據。
網絡爬蟲的分類
網絡爬蟲按照系統架構和實現技術,大致可以分為以下幾種類型:通用網絡爬蟲(GeneralPurposeWebCrawler)、聚焦網絡爬蟲(FocusedWebCrawler)、增量式網絡爬蟲(IncrementalWebCrawler)、深層網絡爬蟲(DeepWebCrawler)。實際的網絡爬蟲系統通常是幾種爬蟲技術相結合實現的。
通用網絡爬蟲:爬行對象從一些種子URL擴充到整個Web,主要為門戶站點搜索引擎和大型Web服務提供商采集數據。
通用網絡爬蟲的爬取范圍和數量巨大,對于爬行速度和存儲空間要求較高,對于爬行頁面的順序要求較低,通常采用并行工作方式,有較強的應用價值。
聚焦網絡爬蟲,又稱為主題網絡爬蟲:是指選擇性地爬行那些與預先定義好的主題相關的頁面。
和通用爬蟲相比,聚焦爬蟲只需要爬行與主題相關的頁面,極大地節省了硬件和網絡資源,保存的頁面也由于數量少而更新快,可以很好地滿足一些特定人群對特定領域信息的需求。
通常在設計聚焦網絡爬蟲時,需要加入鏈接和內容篩選模塊。一個常見的案例是基于關鍵字獲取符合用戶需求的數據,如下圖所示:
增量網絡爬蟲:對已下載網頁采取增量式更新和只爬行新產生的或者已經發生變化網頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面,歷史已經采集過的頁面不重復采集。
增量網絡爬蟲避免了重復采集數據,可以減小時間和空間上的耗費。通常在設計網絡爬蟲時,需要在數據庫中,加入時間戳,基于時間戳上的先后,判斷程序是否繼續執行。
DeepWeb爬蟲:指大部分內容不能通過靜態鏈接獲取,只有用戶提交一些表單信息才能獲取的Web頁面。例如,需要模擬登陸的網絡爬蟲便屬于這類網絡爬蟲。另外,還有一些需要用戶提交關鍵詞才能獲取的內容,如京東淘寶提交關鍵字、價格區間獲取產品的相關信息。
網絡爬蟲的流程
網絡爬蟲基本流程可用下圖描述:
具體流程為:
需求者選取一部分種子URL(或初始URL),將其放入待爬取的隊列中。如在Java網絡爬蟲中,可以放入LinkedList或List中。
判斷URL隊列是否為空,如果為空則結束程序的執行,否則執行第三步驟。
從待爬取的URL隊列中取出待爬的一個URL,獲取URL對應的網頁內容。在此步驟需要使用響應的狀態碼(如200,403等)判斷是否獲取數據,如響應成功則執行解析操作;如響應不成功,則將其重新放入待爬取隊列(注意這里需要移除無效URL)。
針對已經響應成功后獲取到的數據,執行頁面解析操作。此步驟根據用戶需求獲取網頁內容里的部分數據,如汽車論壇帖子的標題、發表的時間等。
針對3步驟已解析的數據,將其進行存儲。
網絡爬蟲的爬行策略
一般的網絡爬蟲的爬行策略分為兩種:深度優先搜索(Depth-FirstSearch)策略、廣度優先搜索(Breadth-FirstSearch)策略。
深度優先搜索策略:從根節點的URL開始,根據優先級向下遍歷該根節點對應的子節點。當訪問到某一子節點URL時,以該子節點為入口,繼續向下層遍歷,直到沒有新的子節點可以繼續訪問為止。接著使用回溯的方法,找到沒有被訪問到的節點,以類似的方式進行搜索。下圖給出了理解深度優先搜索的一個簡單案例:
廣度優先搜索策略:也稱為寬度優先,是另外一種非常有效的搜索技術,這種方法按照層進行遍歷頁面。下圖可幫助理解廣度優先搜索的遍歷方式:
基于廣度優先的爬蟲是最簡單的爬取網站頁面的方法,也是目前使用較為廣泛的方法。
學習建議
網絡爬蟲是入門某一門編程語言的實戰技術:很多學習編程語言(如Java)的同學,采用的方式只看書或在網絡上看一些Java視頻教程,而這將導致的后果就是面對一個具體項目時,不知道如何上手,尤其對新手而言。或者,一段時間后,就將之前的書本內容或視頻內容遺忘了。
為此,我建議這些學習者可采用網絡爬蟲技術入門某一門編程語言。因為爬蟲技術是個綜合性很強的技術,涉及到編程語言的很多方面。小編特別選用了Java作為開發語言,將帶大家深入了解Java網絡爬蟲背后的核心技術。學完該課程,相信您也已很好地入門Java編程語言。
對于零基礎入門Java網絡爬蟲的同學,在學習過程中請注意以下幾點:
理解爬蟲的基本原理。
學習Java網絡爬蟲涉及的基礎知識:基礎不牢,地動山搖,學習和掌握網絡爬蟲的基礎知識很重要。
吃透基本的爬蟲代碼,并在此基礎上進行改寫。
不斷實戰,發現爬蟲中涉及的新問題,并解決問題。
以上就是動力節點java培訓機構小編介紹的“Java基礎學習:Java爬蟲高級教程”的內容,希望對大家有幫助,更多java最新資訊請繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習