最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

什么叫爬蟲(chóng)技術(shù)?有哪些作用?

優(yōu)采云 發(fā)布時(shí)間: 2020-06-15 08:03

  1、爬蟲(chóng)技術(shù)2113概述

  網(wǎng)絡(luò )爬蟲(chóng)(Web crawler),是一種根據5261一定的規則,自動(dòng)地抓取萬(wàn)4102維1653網(wǎng)信息的程序或則腳本,它們被廣泛用于互聯(lián)網(wǎng)搜索引擎或其他類(lèi)似網(wǎng)站,可以手動(dòng)采集所有其才能訪(fǎng)問(wèn)到的頁(yè)面內容,以獲取或更新那些網(wǎng)站的內容和檢索方法。從功能上來(lái)講,爬蟲(chóng)通常分為數據采集,處理,儲存三個(gè)部份。

  傳統爬蟲(chóng)從一個(gè)或若干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當前頁(yè)面上抽取新的URL裝入隊列,直到滿(mǎn)足系統的一定停止條件。聚焦爬蟲(chóng)的工作流程較為復雜,需要按照一定的網(wǎng)頁(yè)剖析算法過(guò)濾與主題無(wú)關(guān)的鏈接,保留有用的鏈接并將其倒入等待抓取的URL隊列。然后,它將按照一定的搜索策略從隊列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復上述過(guò)程,直到達到系統的某一條件時(shí)停止。另外,所有被爬蟲(chóng)抓取的網(wǎng)頁(yè)將會(huì )被系統儲存,進(jìn)行一定的剖析、過(guò)濾,并構建索引,以便以后的查詢(xún)和檢索;對于聚焦爬蟲(chóng)來(lái)說(shuō),這一過(guò)程所得到的剖析結果還可能對之后的抓取過(guò)程給出反饋和指導。

  相對于通用網(wǎng)路爬蟲(chóng),聚焦爬蟲(chóng)還須要解決三個(gè)主要問(wèn)題:

  (1) 對抓取目標的描述或定義;

  (2) 對網(wǎng)頁(yè)或數據的剖析與過(guò)濾;

  (3) 對URL的搜索策略。

  2、爬蟲(chóng)原理

  2.1 網(wǎng)絡(luò )爬蟲(chóng)原理

  Web網(wǎng)路爬蟲(chóng)系統的功能是下載網(wǎng)頁(yè)數據,為搜索引擎系統提供數據來(lái)源。很多小型的網(wǎng)路搜索引擎系統都被稱(chēng)為基于 Web數據采集的搜索引擎系統,比如 Google、Baidu。由此可見(jiàn)Web 網(wǎng)絡(luò )爬蟲(chóng)系統在搜索引擎中的重要性。網(wǎng)頁(yè)中不僅包含供用戶(hù)閱讀的文字信息外,還包含一些超鏈接信息。Web網(wǎng)路爬蟲(chóng)系統正是通過(guò)網(wǎng)頁(yè)中的超聯(lián)接信息不斷獲得網(wǎng)路上的其它網(wǎng)頁(yè)。正是由于這些采集過(guò)程象一個(gè)爬蟲(chóng)或則蜘蛛在網(wǎng)路上漫游,所以它才被稱(chēng)為網(wǎng)路爬蟲(chóng)系統或則網(wǎng)路蜘蛛系統,在英語(yǔ)中稱(chēng)為Spider或則Crawler。

  2.2 網(wǎng)絡(luò )爬蟲(chóng)系統的工作原理

  在網(wǎng)路爬蟲(chóng)的系統框架中,主過(guò)程由控制器,解析器,資源庫三部份組成??刂破鞯闹饕ぷ魇秦撠熃o多線(xiàn)程中的各個(gè)爬蟲(chóng)線(xiàn)程分配工作任務(wù)。解析器的主要工作是下載網(wǎng)頁(yè),進(jìn)行頁(yè)面的處理,主要是將一些JS腳本標簽、CSS代碼內容、空格字符、HTML標簽等內容處理掉,爬蟲(chóng)的基本工作是由解析器完成。資源庫是拿來(lái)儲存下載到的網(wǎng)頁(yè)資源,一般都采用小型的數據庫儲存,如Oracle數據庫,并對其構建索引。

  控制器

  控制器是網(wǎng)路爬蟲(chóng)的**控制器,它主要是負責按照系統傳過(guò)來(lái)的URL鏈接,分配一線(xiàn)程,然后啟動(dòng)線(xiàn)程調用爬蟲(chóng)爬取網(wǎng)頁(yè)的過(guò)程。

  解析器

  解析器是負責網(wǎng)路爬蟲(chóng)的主要部份,其負責的工作主要有:下載網(wǎng)頁(yè)的功能,對網(wǎng)頁(yè)的文本進(jìn)行處理,如過(guò)濾功能,抽取特殊HTML標簽的功能,分析數據功能。

  資源庫

  主要是拿來(lái)儲存網(wǎng)頁(yè)中下載出來(lái)的數據記錄的容器,并提供生成索引的目標源。中大型的數據庫產(chǎn)品有:Oracle、Sql Server等。

  Web網(wǎng)路爬蟲(chóng)系統通常會(huì )選擇一些比較重要的、出度(網(wǎng)頁(yè)中鏈出超鏈接數)較大的網(wǎng)站的URL作為*敏*感*詞*URL集合。網(wǎng)絡(luò )爬蟲(chóng)系統以這種*敏*感*詞*集合作為初始URL,開(kāi)始數據的抓取。因為網(wǎng)頁(yè)中富含鏈接信息,通過(guò)已有網(wǎng)頁(yè)的 URL會(huì )得到一些新的 URL,可以把網(wǎng)頁(yè)之間的指向結構視為一個(gè)森林,每個(gè)*敏*感*詞*URL對應的網(wǎng)頁(yè)是森林中的一棵樹(shù)的根節點(diǎn)。這樣,Web網(wǎng)路爬蟲(chóng)系統就可以按照廣度優(yōu)先算法或則深度優(yōu)先算法遍歷所有的網(wǎng)頁(yè)。由于深度優(yōu)先搜索算法可能會(huì )讓爬蟲(chóng)系統深陷一個(gè)網(wǎng)站內部,不利于搜索比較緊靠網(wǎng)站首頁(yè)的網(wǎng)頁(yè)信息,因此通常采用廣度優(yōu)先搜索算法采集網(wǎng)頁(yè)。Web網(wǎng)路爬蟲(chóng)系統首先將*敏*感*詞*URL裝入下載隊列,然后簡(jiǎn)單地從隊首取出一個(gè)URL下載其對應的網(wǎng)頁(yè)。得到網(wǎng)頁(yè)的內容將其儲存后,再經(jīng)過(guò)解析網(wǎng)頁(yè)中的鏈接信息可以得到一些新的URL,將這種URL加入下載隊列。然后再取出一個(gè)URL,對其對應的網(wǎng)頁(yè)進(jìn)行下載,然后再解析,如此反復進(jìn)行,直到遍歷了整個(gè)網(wǎng)路或則滿(mǎn)足某種條件后才能停止出來(lái)。

  網(wǎng)絡(luò )爬蟲(chóng)的基本工作流程如下:

  1.首先選定一部分悉心選購的*敏*感*詞*URL;

  2.將這種URL倒入待抓取URL隊列;

  3.從待抓取URL隊列中取出待抓取在URL,解析DNS,并且得到主機的ip,并將URL對應的網(wǎng)頁(yè)下載出來(lái),存儲進(jìn)已下載網(wǎng)頁(yè)庫中。此外,將這種URL放進(jìn)已抓取URL隊列;

  4.分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL倒入待抓取URL隊列,從而步入下一個(gè)循環(huán)。

  2.3 抓取策略

  在爬蟲(chóng)系統中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什么樣的次序排列也是一個(gè)很重要的問(wèn)題,因為這涉及到先抓取那種頁(yè)面,后抓取那個(gè)頁(yè)面。而決定那些URL排列次序的方式,叫做抓取策略。下面重點(diǎn)介紹幾種常見(jiàn)的抓取策略:

  2.3.1 深度優(yōu)先遍歷策略

  深度優(yōu)先遍歷策略是指網(wǎng)絡(luò )爬蟲(chóng)會(huì )從起始頁(yè)開(kāi)始,一個(gè)鏈接一個(gè)鏈接跟蹤下去,處理完這條線(xiàn)路以后再轉到下一個(gè)起始頁(yè),繼續跟蹤鏈接。我們以下面的圖為例:

  遍歷的路徑:A-F-G E-H-I B C D

  2.3.2 寬度優(yōu)先遍歷策略

  寬度優(yōu)先遍歷策略的基本思路是,將新下載網(wǎng)頁(yè)中發(fā)覺(jué)的鏈接直接**待抓取URL隊列的末尾。也就是指網(wǎng)絡(luò )爬蟲(chóng)會(huì )先抓取起始網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè),然后再選擇其中的一個(gè)鏈接網(wǎng)頁(yè),繼續抓取在此網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè)。還是以里面的圖為例:

  遍歷路徑:A-B-C-D-E-F G H I

  2.3.3 反向鏈接數策略

  反向鏈接數是指一個(gè)網(wǎng)頁(yè)被其他網(wǎng)頁(yè)鏈接指向的數目。反向鏈接數表示的是一個(gè)網(wǎng)頁(yè)的內容遭到其他人的推薦的程度。因此,很多時(shí)侯搜索引擎的抓取系統會(huì )使用這個(gè)指標來(lái)評價(jià)網(wǎng)頁(yè)的重要程度,從而決定不同網(wǎng)頁(yè)的抓取先后次序。

  在真實(shí)的網(wǎng)路環(huán)境中,由于廣告鏈接、作弊鏈接的存在,反向鏈接數不能完全等他我那種也的重要程度。因此,搜索引擎常??紤]一些可靠的反向鏈接數。

  2.3.4 Partial PageRank策略

  Partial PageRank算法借鑒了PageRank算法的思想:對于早已下載的網(wǎng)頁(yè),連同待抓取URL隊列中的URL,形成網(wǎng)頁(yè)集合,計算每位頁(yè)面的PageRank值,計算完以后,將待抓取URL隊列中的URL根據PageRank值的大小排列,并根據該次序抓取頁(yè)面。

  如果每次抓取一個(gè)頁(yè)面,就重新估算PageRank值,一種折中方案是:每抓取K個(gè)頁(yè)面后,重新估算一次PageRank值。但是此類(lèi)情況都會(huì )有一個(gè)問(wèn)題:對于早已下載出來(lái)的頁(yè)面中剖析出的鏈接,也就是我們之前談到的未知網(wǎng)頁(yè)那一部分,暫時(shí)是沒(méi)有PageRank值的。為了解決這個(gè)問(wèn)題,會(huì )給那些頁(yè)面一個(gè)臨時(shí)的PageRank值:將這個(gè)網(wǎng)頁(yè)所有入鏈傳遞進(jìn)來(lái)的PageRank值進(jìn)行匯總,這樣就產(chǎn)生了該未知頁(yè)面的PageRank值,從而參與排序。

  2.3.5 OPIC策略策略

  該算法實(shí)際上也是對頁(yè)面進(jìn)行一個(gè)重要性打分。在算法開(kāi)始前,給所有頁(yè)面一個(gè)相同的初始*敏*感*詞*(cash)。當下載了某個(gè)頁(yè)面P以后,將P的*敏*感*詞*平攤給所有從P中剖析出的鏈接,并且將P的*敏*感*詞*清空。對于待抓取URL隊列中的所有頁(yè)面根據*敏*感*詞*數進(jìn)行排序。

  2.3.6 大站優(yōu)先策略

  對于待抓取URL隊列中的所有網(wǎng)頁(yè),根據所屬的網(wǎng)站進(jìn)行分類(lèi)。對于待下載頁(yè)面數多的網(wǎng)站,優(yōu)先下載。這個(gè)策略也因而稱(chēng)作大站優(yōu)先策略。

  3、爬蟲(chóng)分類(lèi)

  開(kāi)發(fā)網(wǎng)路爬蟲(chóng)應當選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?上面說(shuō)的爬蟲(chóng),基本可以分3類(lèi):

 ?。?)分布式爬蟲(chóng):Nutch

 ?。?)JAVA爬蟲(chóng):Crawler4j、WebMagic、WebCollector

 ?。?)非JAVA爬蟲(chóng):scrapy(基于Python語(yǔ)言開(kāi)發(fā))

  3.1 分布式爬蟲(chóng)

  爬蟲(chóng)使用分布式,主要是解決兩個(gè)問(wèn)題:

  1)海量URL管理

  2)網(wǎng)速

  現在比較流行的分布式爬蟲(chóng),是Apache的Nutch。但是對于大多數用戶(hù)來(lái)說(shuō),Nutch是這幾類(lèi)爬蟲(chóng)里,最不好的選擇,理由如下:

  1)Nutch是為搜索引擎設計的爬蟲(chóng),大多數用戶(hù)是須要一個(gè)做精準數據爬?。ň槿。┑呐老x(chóng)。Nutch運行的一套流程里,有三分之二是為了搜索引擎而設計的。對精抽取沒(méi)有很大的意義。也就是說(shuō),用Nutch做數據抽取,會(huì )浪費好多的時(shí)間在不必要的估算上。而且假如你企圖通過(guò)對Nutch進(jìn)行二次開(kāi)發(fā),來(lái)促使它適用于精抽取的業(yè)務(wù),基本上就要破壞Nutch的框架,把Nutch改的面目全非,有更改Nutch的能力,真的不如自己重新寫(xiě)一個(gè)分布式爬蟲(chóng)框架了。

  2)Nutch依賴(lài)hadoop運行,hadoop本身會(huì )消耗好多的時(shí)間。如果集群機器數目較少,爬取速率反倒不如單機爬蟲(chóng)快。

  3)Nutch似乎有一套插件機制,而且作為亮點(diǎn)宣傳??梢钥匆?jiàn)一些開(kāi)源的Nutch插件爬蟲(chóng)軟件 性能要求,提供精抽取的功能。但是開(kāi)發(fā)過(guò)Nutch插件的人都曉得,Nutch的插件系統有多拙劣。利用反射的機制來(lái)加載和調用插件,使得程序的編撰和調試都顯得異常困難,更別說(shuō)在里面開(kāi)發(fā)一套復雜的精抽取系統了。而且Nutch并沒(méi)有為精抽取提供相應的插件掛載點(diǎn)。Nutch的插件有只有五六個(gè)掛載點(diǎn),而這五六個(gè)掛載點(diǎn)都是為了搜索引擎服務(wù)的,并沒(méi)有為精抽取提供掛載點(diǎn)。大多數Nutch的精抽取插件,都是掛載在“頁(yè)面解析”(parser)這個(gè)掛載點(diǎn)的,這個(gè)掛載點(diǎn)雖然是為了解析鏈接(為后續爬取提供URL),以及為搜索引擎提供一些易抽取的網(wǎng)頁(yè)信息(網(wǎng)頁(yè)的meta信息、text文本)。

  4)用Nutch進(jìn)行爬蟲(chóng)的二次開(kāi)發(fā),爬蟲(chóng)的編撰和調試所需的時(shí)間,往往是單機爬蟲(chóng)所需的十倍時(shí)間不止。了解Nutch源碼的學(xué)**成本很高爬蟲(chóng)軟件 性能要求,何況是要使一個(gè)團隊的人都看懂Nutch源碼。調試過(guò)程中會(huì )出現除程序本身之外的各類(lèi)問(wèn)題(hadoop的問(wèn)題、hbase的問(wèn)題)。

  5)很多人說(shuō)Nutch2有g(shù)ora,可以持久化數據到avro文件、hbase、mysql等。很多人雖然理解錯了,這里說(shuō)的持久化數據,是指將URL信息(URL管理所須要的數據)存放到avro、hbase、mysql。并不是你要抽取的結構化數據。其實(shí)對大多數人來(lái)說(shuō),URL信息存在那里無(wú)所謂。

  6)Nutch2的版本目前并不適宜開(kāi)發(fā)。官方如今穩定的Nutch版本是nutch2.2.1,但是這個(gè)版本綁定了gora-0.3。如果想用hbase配合nutch(大多數人用nutch2就是為了用hbase),只能使用0.90版本左右的hbase,相應的就要將hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比較有欺騙作用,Nutch2的教程有兩個(gè),分別是Nutch1.x和Nutch2.x,這個(gè)Nutch2.x官網(wǎng)上寫(xiě)的是可以支持到hbase 0.94。但是實(shí)際上,這個(gè)Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1以后的一個(gè)版本,這個(gè)版本在官方的SVN中不斷更新。而且十分不穩定(一直在更改)。

  所以,如果你不是要做搜索引擎,盡量不要選擇Nutch作為爬蟲(chóng)。有些團隊就喜歡隨大流,非要選擇Nutch來(lái)開(kāi)發(fā)精抽取的爬蟲(chóng),其實(shí)是沖著(zhù)Nutch的名氣,當然最后的結果常常是項目延后完成。

  如果你是要做搜索引擎,Nutch1.x是一個(gè)非常好的選擇。Nutch1.x和solr或則es配合,就可以構成一套十分強悍的搜索引擎了。如果非要用Nutch2的話(huà),建議等到Nutch2.3發(fā)布再看。目前的Nutch2是一個(gè)極其不穩定的版本。

  3.2 JAVA爬蟲(chóng)

  這里把JAVA爬蟲(chóng)單獨分為一類(lèi),是因為JAVA在網(wǎng)路爬蟲(chóng)這塊的生態(tài)圈是十分健全的。相關(guān)的資料也是最全的。這里可能有爭議,我只是隨便談?wù)劇?/p>

  其實(shí)開(kāi)源網(wǎng)絡(luò )爬蟲(chóng)(框架)的開(kāi)發(fā)十分簡(jiǎn)單,難問(wèn)題和復雜的問(wèn)題都被原先的人解決了(比如DOM樹(shù)解析和定位、字符集檢查、海量URL去重),可以說(shuō)是毫無(wú)技術(shù)濃度。包括Nutch,其實(shí)Nutch的技術(shù)難點(diǎn)是開(kāi)發(fā)hadoop,本身代碼十分簡(jiǎn)單。網(wǎng)絡(luò )爬蟲(chóng)從某種意義來(lái)說(shuō),類(lèi)似遍歷本機的文件,查找文件中的信息。沒(méi)有任何難度可言。之所以選擇開(kāi)源爬蟲(chóng)框架,就是為了省事。比如爬蟲(chóng)的URL管理、線(xiàn)程池之類(lèi)的模塊,誰(shuí)都能做,但是要做穩定也是須要一段時(shí)間的調試和更改的。

  對于爬蟲(chóng)的功能來(lái)說(shuō)。用戶(hù)比較關(guān)心的問(wèn)題常常是:

  1)爬蟲(chóng)支持多線(xiàn)程么、爬蟲(chóng)能用代理么、爬蟲(chóng)會(huì )爬取重復數據么、爬蟲(chóng)能爬取JS生成的信息么?

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区