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