自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

網(wǎng)絡(luò)爬蟲基本原理(二)

大數(shù)據(jù)
網(wǎng)絡(luò)爬蟲基本原理(二) 網(wǎng)絡(luò)爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分。爬蟲的主要目的是將互聯(lián)網(wǎng)上的網(wǎng)頁下載到本地形成一個或聯(lián)網(wǎng)內(nèi)容的鏡像備份。這篇文章主要對爬蟲以及抓取系統(tǒng)進(jìn)行一個簡單的概述。

[[170056]]

一、更新策略

互聯(lián)網(wǎng)是實時變化的,具有很強(qiáng)的動態(tài)性。網(wǎng)頁更新策略主要是決定何時更新之前已經(jīng)下載過的頁面。常見的更新策略又以下三種:

1.歷史參考策略

顧名思義,根據(jù)頁面以往的歷史更新數(shù)據(jù),預(yù)測該頁面未來何時會發(fā)生變化。一般來說,是通過泊松過程進(jìn)行建模進(jìn)行預(yù)測。

2.用戶體驗策略

盡管搜索引擎針對于某個查詢條件能夠返回數(shù)量巨大的結(jié)果,但是用戶往往只關(guān)注前幾頁結(jié)果。因此,抓取系統(tǒng)可以優(yōu)先更新那些現(xiàn)實在查詢結(jié)果前幾頁中的網(wǎng)頁,而后再更新那些后面的網(wǎng)頁。這種更新策略也是需要用到歷史信息的。用戶體驗策略保留網(wǎng)頁的多個歷史版本,并且根據(jù)過去每次內(nèi)容變化對搜索質(zhì)量的影響,得出一個平均值,用這個值作為決定何時重新抓取的依據(jù)。

3.聚類抽樣策略

前面提到的兩種更新策略都有一個前提:需要網(wǎng)頁的歷史信息。這樣就存在兩個問題:***,系統(tǒng)要是為每個系統(tǒng)保存多個版本的歷史信息,無疑增加了很多的系統(tǒng)負(fù)擔(dān);第二,要是新的網(wǎng)頁完全沒有歷史信息,就無法確定更新策略。

這種策略認(rèn)為,網(wǎng)頁具有很多屬性,類似屬性的網(wǎng)頁,可以認(rèn)為其更新頻率也是類似的。要計算某一個類別網(wǎng)頁的更新頻率,只需要對這一類網(wǎng)頁抽樣,以他們的更新周期作為整個類別的更新周期?;舅悸啡鐖D:

二、分布式抓取系統(tǒng)結(jié)構(gòu)

一般來說,抓取系統(tǒng)需要面對的是整個互聯(lián)網(wǎng)上數(shù)以億計的網(wǎng)頁。單個抓取程序不可能完成這樣的任務(wù)。往往需要多個抓取程序一起來處理。一般來說抓取系統(tǒng)往往是一個分布式的三層結(jié)構(gòu)。如圖所示:

最下一層是分布在不同地理位置的數(shù)據(jù)中心,在每個數(shù)據(jù)中心里有若干臺抓取服務(wù)器,而每臺抓取服務(wù)器上可能部署了若干套爬蟲程序。這就構(gòu)成了一個基本的分布式抓取系統(tǒng)。

對于一個數(shù)據(jù)中心內(nèi)的不同抓去服務(wù)器,協(xié)同工作的方式有幾種:

1.主從式(Master-Slave)

主從式基本結(jié)構(gòu)如圖所示:

對于主從式而言,有一臺專門的Master服務(wù)器來維護(hù)待抓取URL隊列,它負(fù)責(zé)每次將URL分發(fā)到不同的Slave服務(wù)器,而Slave服務(wù)器則負(fù)責(zé)實際的網(wǎng)頁下載工作。Master服務(wù)器除了維護(hù)待抓取URL隊列以及分發(fā)URL之外,還要負(fù)責(zé)調(diào)解各個Slave服務(wù)器的負(fù)載情況。以免某些Slave服務(wù)器過于清閑或者勞累。

這種模式下,Master往往容易成為系統(tǒng)瓶頸。

 

2.對等式(Peer to Peer)

對等式的基本結(jié)構(gòu)如圖所示:

在這種模式下,所有的抓取服務(wù)器在分工上沒有不同。每一臺抓取服務(wù)器都可以從待抓取在URL隊列中獲取URL,然后對該URL的主域名的hash值H,然后計算H mod m(其中m是服務(wù)器的數(shù)量,以上圖為例,m為3),計算得到的數(shù)就是處理該URL的主機(jī)編號。

舉例:假設(shè)對于URL www.baidu.com,計算器hash值H=8,m=3,則H mod m=2,因此由編號為2的服務(wù)器進(jìn)行該鏈接的抓取。假設(shè)這時候是0號服務(wù)器拿到這個URL,那么它將該URL轉(zhuǎn)給服務(wù)器2,由服務(wù)器2進(jìn)行抓取。

這種模式有一個問題,當(dāng)有一臺服務(wù)器死機(jī)或者添加新的服務(wù)器,那么所有URL的哈希求余的結(jié)果就都要變化。也就是說,這種方式的擴(kuò)展性不佳。針對這種情況,又有一種改進(jìn)方案被提出來。這種改進(jìn)的方案是一致性哈希法來確定服務(wù)器分工。其基本結(jié)構(gòu)如圖所示:

一致性哈希將URL的主域名進(jìn)行哈希運(yùn)算,映射為一個范圍在0-232之間的某個數(shù)。而將這個范圍平均的分配給m臺服務(wù)器,根據(jù)URL主域名哈希運(yùn)算的值所處的范圍判斷是哪臺服務(wù)器來進(jìn)行抓取。

如果某一臺服務(wù)器出現(xiàn)問題,那么本該由該服務(wù)器負(fù)責(zé)的網(wǎng)頁則按照順時針順延,由下一臺服務(wù)器進(jìn)行抓取。這樣的話,及時某臺服務(wù)器出現(xiàn)問題,也不會影響其他的工作。

責(zé)任編輯:趙寧寧 來源: 36大數(shù)據(jù)
相關(guān)推薦

2016-08-17 23:53:29

網(wǎng)絡(luò)爬蟲抓取系統(tǒng)

2012-01-12 14:37:34

jQuery

2011-11-29 12:17:00

2009-02-24 09:43:00

IP電話原理

2021-02-08 21:40:04

SockmapBPF存儲

2010-08-20 13:29:33

OFDM

2013-04-07 14:09:55

Android應(yīng)用基本

2019-11-28 10:45:28

ZooKeeper源碼分布式

2020-03-21 14:57:14

手機(jī)定位智能手機(jī)APP

2011-07-07 14:46:10

Cocoa Xcode

2010-03-17 13:35:02

2010-03-18 20:13:03

Java socket

2020-12-29 16:55:44

ZooKeeper運(yùn)維數(shù)據(jù)結(jié)構(gòu)

2011-07-07 14:10:21

Cocoa 內(nèi)省 hash

2009-06-11 09:56:09

MySQL Repli原理

2010-01-07 09:53:09

Winform多線程編

2012-09-28 10:12:55

2020-11-26 13:54:03

容器LinuxDocker

2024-01-30 09:21:01

deltaFifo機(jī)制apiServer

2019-04-30 08:15:31

點贊
收藏

51CTO技術(shù)棧公眾號