国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

地方門戶網(wǎng)站開發(fā)上海搜索優(yōu)化推廣哪家強(qiáng)

地方門戶網(wǎng)站開發(fā),上海搜索優(yōu)化推廣哪家強(qiáng),深圳網(wǎng)站公司建設(shè)方案,無錫網(wǎng)站制作公司CHAPTER 9: 《DESIGN A WEB CRAWLER》第九章 設(shè)計(jì)一個(gè)web爬蟲 在本章中,我們將重點(diǎn)介紹網(wǎng)絡(luò)爬蟲設(shè)計(jì):一種有趣而經(jīng)典的系統(tǒng)設(shè)計(jì) 面試問題。 網(wǎng)絡(luò)爬蟲被稱為機(jī)器人或蜘蛛。它被搜索引擎廣泛用于發(fā)現(xiàn)網(wǎng)絡(luò)上的新內(nèi)容或更新內(nèi)容。內(nèi)容可以是網(wǎng)頁、圖像、視頻…

CHAPTER 9: 《DESIGN A WEB CRAWLER》第九章 設(shè)計(jì)一個(gè)web爬蟲

在本章中,我們將重點(diǎn)介紹網(wǎng)絡(luò)爬蟲設(shè)計(jì):一種有趣而經(jīng)典的系統(tǒng)設(shè)計(jì)
面試問題。
網(wǎng)絡(luò)爬蟲被稱為機(jī)器人或蜘蛛。它被搜索引擎廣泛用于發(fā)現(xiàn)網(wǎng)絡(luò)上的新內(nèi)容或更新內(nèi)容。內(nèi)容可以是網(wǎng)頁、圖像、視頻、PDF文檔等。網(wǎng)絡(luò)爬蟲首先收集一些網(wǎng)頁,然后跟蹤這些網(wǎng)頁上的鏈接頁面以收集新內(nèi)容。圖 9-1 顯示了爬網(wǎng)過程的直觀示例。
在這里插入圖片描述
爬蟲有多種用途:

  • 搜索引擎索引:這是最常見的用例。爬蟲收集網(wǎng)絡(luò)頁面為搜索引擎創(chuàng)建本地索引。例如Googlebot 就是網(wǎng)絡(luò)谷歌搜索引擎背后的爬蟲。
  • Web 存檔:這是從 Web 收集信息以保存的過程數(shù)據(jù)以備將來使用。例如,許多國家圖書館運(yùn)行爬蟲來存檔網(wǎng)絡(luò)網(wǎng)站。值得注意的例子是美國國會圖書館[1]和歐盟網(wǎng)絡(luò)檔案館[2]。
  • 網(wǎng)絡(luò)挖礦:網(wǎng)絡(luò)的爆炸性增長為數(shù)據(jù)挖掘。網(wǎng)絡(luò)挖掘有助于從互聯(lián)網(wǎng)上發(fā)現(xiàn)有用的知識。為例如,頂級金融公司使用爬蟲下載股東大會和年度報(bào)告以了解公司的關(guān)鍵舉措。
  • 網(wǎng)絡(luò)監(jiān)控。爬蟲有助于監(jiān)控版權(quán)和商標(biāo)侵權(quán)行為通過互聯(lián)網(wǎng)。例如,Digimarc [3] 利用爬蟲來發(fā)現(xiàn)盜版作品和報(bào)告。

開發(fā)網(wǎng)絡(luò)爬蟲的復(fù)雜性取決于我們打算支持的規(guī)模。它可以是一個(gè)只需要幾個(gè)小時(shí)就能完成的小型學(xué)校項(xiàng)目,也可以是一個(gè)巨大的項(xiàng)目需要專門的工程團(tuán)隊(duì)持續(xù)改進(jìn)的項(xiàng)目。因此,我們將在下面探討要支持的規(guī)模和功能。

第 1 步 - 了解問題并確定設(shè)計(jì)范圍

網(wǎng)絡(luò)爬蟲的基本算法很簡單:

  1. 給定一組 URL,下載這些 URL 鏈接的所有網(wǎng)頁。
  2. 從這些網(wǎng)頁中提取 URL
  3. 將新 URL 添加到要下載的 URL 列表中。重復(fù)這 3 個(gè)步驟。

網(wǎng)絡(luò)爬蟲真的像這個(gè)基本算法一樣簡單嗎?不完全是。設(shè)計(jì)一個(gè)可擴(kuò)展的網(wǎng)絡(luò)爬蟲是一項(xiàng)極其復(fù)雜的任務(wù)。任何人都不太可能設(shè)計(jì)面試期間的大型網(wǎng)絡(luò)爬蟲。在開始設(shè)計(jì)之前,我們必須提出問題以了解需求并確定設(shè)計(jì)范圍:
應(yīng)聘者:爬蟲的主要用途是什幺?它是否用于搜索引擎索引,數(shù)據(jù)挖掘,還是別的什幺?
面試官:搜索引擎索引。
應(yīng)聘者:網(wǎng)絡(luò)爬蟲每月收集多少個(gè)網(wǎng)頁?
面試官:10 億頁。
應(yīng)聘者:包括哪些內(nèi)容類型?僅限 HTML 或其他內(nèi)容類型,例如還有 PDF 和圖像?
面試官:僅限 HTML。
應(yīng)聘者:我們可以考慮新添加或編輯的網(wǎng)頁嗎?
面試官:是的,我們應(yīng)該考慮新添加或編輯的網(wǎng)頁。
應(yīng)聘者:我們需要存儲從網(wǎng)絡(luò)上抓取的 HTML 頁面嗎?
面試官:是的,最長 5 年
應(yīng)聘者:如何處理重復(fù)內(nèi)容的網(wǎng)頁?
面試官:包含重復(fù)內(nèi)容的頁面應(yīng)被忽略

以上是您可以向面試官提出的一些示例問題。重要的是了解要求并澄清歧義。即使你被要求設(shè)計(jì)一個(gè)
像網(wǎng)絡(luò)爬蟲這樣的簡單產(chǎn)品,你和你的面試官也可能有不一樣的想法。

除了與面試官澄清的功能外,記下一個(gè)好的網(wǎng)絡(luò)爬蟲的以下特征:

  • 可測量性:網(wǎng)絡(luò)非常大。那里有數(shù)十億個(gè)網(wǎng)頁。使用并行化爬網(wǎng)應(yīng)該非常有效。
  • 魯棒性:網(wǎng)絡(luò)充滿了陷阱。錯(cuò)誤的 HTML、無響應(yīng)的服務(wù)器、崩潰、惡意鏈接等都很常見。爬網(wǎng)進(jìn)程必須處理所有這些邊緣情況。
  • 人性:爬蟲不應(yīng)在短時(shí)間內(nèi)向網(wǎng)站發(fā)出太多請求時(shí)間間隔。
  • 可擴(kuò)展性:系統(tǒng)非常靈活,因此只需進(jìn)行最少的更改即可支持新的內(nèi)容類型。例如,如果我們將來想抓取圖像文檔,我們不需要重新設(shè)計(jì)整個(gè)系統(tǒng)。

封底計(jì)算

以下估計(jì)基于許多假設(shè),重要的是與面試官溝通以達(dá)成共識。

  • 假設(shè)每月下載10億個(gè)網(wǎng)頁。
  • QPS:1,000,000,000 / 30 天 / 24 小時(shí) / 3600 秒 = ~400 頁/秒。
  • 峰值 QPS = 2 * QPS = 800
  • 假設(shè)平均網(wǎng)頁大小為 500k。
  • 10 億頁 x 500k = 每月 500 TB 存儲。如果您不清楚數(shù)字存儲單元,請?jiān)俅螢g覽第 2 章中的“2 的冪”部分。
  • 假設(shè)數(shù)據(jù)存儲 5 年,則 500 TB * 12 個(gè)月 * 5 年 = 30 PB。一個(gè) 30 PB需要存儲來存儲五年的內(nèi)容。

第 2 步 - 提出高級設(shè)計(jì)并獲得支持

一旦明確了需求,我們就會繼續(xù)進(jìn)行高級設(shè)計(jì)。靈感來自以前的在對網(wǎng)絡(luò)爬蟲的研究[4] [5]中,我們提出了一個(gè)如圖9-2所示的高級設(shè)計(jì)。
在這里插入圖片描述
首先,我們探索每個(gè)設(shè)計(jì)組件以了解它們的功能。然后我們逐步檢查爬蟲工作流程。
種子網(wǎng)址
網(wǎng)絡(luò)爬蟲使用種子 URL 作為爬網(wǎng)過程的起點(diǎn)。例如,要抓取大學(xué)網(wǎng)站上的所有網(wǎng)頁,選擇種子 URL 的直觀方法是使用大學(xué)的域名。要抓取整個(gè)網(wǎng)絡(luò),我們需要?jiǎng)?chuàng)造性地選擇種子 URL。一個(gè)好的種子網(wǎng)址作為一個(gè)很好的起點(diǎn),爬蟲可以利用它來遍歷盡可能多的鏈接。一般策略是將整個(gè) URL 空間劃分為更小的空間。第一個(gè)提出的該方法基于地點(diǎn),因?yàn)椴煌膰铱赡苡胁煌牧餍芯W(wǎng)站。另一種方法是根據(jù)主題選擇種子 URL;例如,我們可以劃分 URL 空間購物、體育、醫(yī)療保健等。種子 URL 選擇是一個(gè)開放式問題。你應(yīng)該不會給出完美的答案。開放思考
網(wǎng)址前沿
大多數(shù)現(xiàn)代網(wǎng)絡(luò)爬蟲將爬行狀態(tài)分為兩種:待下載和已下載。存儲要下載的 URL 的組件稱為 URL Frontier。您可以將其稱為先進(jìn)先出 (FIFO) 隊(duì)列。有關(guān)詳細(xì)信息URL Frontier,請參閱深入研究。
HTML下載器
HTML 下載器從 Internet 下載網(wǎng)頁。通過 URL 邊界提供了這些 URL。
DNS解析器
要下載網(wǎng)頁,必須將 URL 轉(zhuǎn)換為 IP 地址。超文本標(biāo)記語言下載器調(diào)用DNS解析器來獲取URL對應(yīng)的IP地址。為了例如,自 2019 年 3 月 5 日起,URL www.wikipedia.org 已轉(zhuǎn)換為 IP 地址198.35.26.96。
內(nèi)容解析器
下載網(wǎng)頁后,必須對其進(jìn)行解析和驗(yàn)證,因?yàn)楦袷藉e(cuò)誤的網(wǎng)頁頁面可能會引發(fā)問題并浪費(fèi)存儲空間。在中實(shí)現(xiàn)內(nèi)容解析器抓取服務(wù)器會減慢抓取過程。因此,內(nèi)容解析器是一個(gè)單獨(dú)的成分。
內(nèi)容已存在了?
在線研究[6]顯示,29%的網(wǎng)頁是重復(fù)內(nèi)容,這可能導(dǎo)致相同的內(nèi)容被存儲多次。我們介紹“看到的內(nèi)容?”數(shù)據(jù)結(jié)構(gòu),消除數(shù)據(jù)冗余并縮短處理時(shí)間。它有助于檢測新的之前存儲在系統(tǒng)中的內(nèi)容。要比較兩個(gè) HTML 文檔,我們可以一個(gè)接一個(gè)的比較他們。然而,這種方法速度慢且耗時(shí),尤其是當(dāng)涉及數(shù)十億個(gè)網(wǎng)頁時(shí)。完成這項(xiàng)任務(wù)的一個(gè)有效方法是比較兩個(gè)網(wǎng)頁的哈希值[7]。
內(nèi)容存儲
它是一個(gè)用于存儲HTML內(nèi)容的存儲系統(tǒng)。存儲系統(tǒng)的選擇取決于磁盤和內(nèi)存,數(shù)據(jù)類型、數(shù)據(jù)大小、訪問頻率、壽命等因素。

  • 大多數(shù)內(nèi)容存儲在磁盤上,因?yàn)閿?shù)據(jù)集太大,無法放入內(nèi)存。
  • 熱門內(nèi)容保留在內(nèi)存中以減少延遲。

網(wǎng)址提取器
URL Extractor 從 HTML 頁面中解析并提取鏈接。圖 9-3 顯示了一個(gè)示例鏈接提取過程。通過添加以下內(nèi)容將相對路徑轉(zhuǎn)換為絕對 URL“https://en.wikipedia.org”前綴。
在這里插入圖片描述
URL 過濾器
URL 篩選器排除了“列入黑名單”的網(wǎng)站。
URL Seen?
“URL Seen?”是一種數(shù)據(jù)結(jié)構(gòu),用于跟蹤之前或已經(jīng)訪問過的 URL最尾端地址?!癠RL Seen?”有助于避免多次添加相同的 URL增加服務(wù)器負(fù)載并導(dǎo)致潛在的無限循環(huán)。布隆過濾器和哈希表是實(shí)現(xiàn)“URL Seen?”組件。我們不會詳細(xì)介紹 bloom 過濾器和哈希表的實(shí)現(xiàn)這里。有關(guān)詳細(xì)信息,請參閱參考資料 [4] [8]。
URL 存儲
URL 存儲存儲已訪問的 URL。到目前為止,我們已經(jīng)討論了每個(gè)系統(tǒng)組件。接下來,我們把它們放在一起來解釋工作流。
網(wǎng)絡(luò)爬蟲工作流程
為了更好地逐步解釋工作流程,在設(shè)計(jì)中添加了串行號如圖9-4所示。
avatar第 1 步:將種子 URL 添加到 URL 邊界
第 2 步:HTML 下載器從 URL Frontier 獲取 URL 列表。
第 3 步:HTML 下載器從 DNS 解析器獲取 URL 的 IP 地址并啟動(dòng)下載。
第 4 步:內(nèi)容解析器解析 HTML 頁面并檢查頁面是否格式不正確。
第 5 步:解析和驗(yàn)證內(nèi)容后,將其傳遞給“看到的內(nèi)容”組件。
第 6 步:“看到的內(nèi)容”組件檢查 HTML 頁面是否已在存儲中。

  • 如果它在存儲中,這意味著不同 URL 中的相同內(nèi)容已經(jīng)處理。在這種情況下,HTML 頁面將被丟棄。
  • 如果它不在存儲中,則系統(tǒng)之前沒有處理過相同的內(nèi)容。這內(nèi)容被傳遞給鏈接提取器。

第 7 步:鏈接提取器從 HTML 頁面中提取鏈接。
第 8 步:提取的鏈接將傳遞到 URL 過濾器。
第 9 步:過濾鏈接后,它們被傳遞到“URL Seen?”組件。
第 10 步:“URL Seen”組件檢查 URL 是否已經(jīng)在存儲中,如果是,則為之前處理過,不需要做任何事情。
第 11 步:如果之前未處理過 URL,則會將其添加到 URL 邊界。

第 3 步 - 深入探究設(shè)計(jì)

到目前為止,我們已經(jīng)討論了高級設(shè)計(jì)。接下來,我們將討論最多的重要的建筑構(gòu)件和技術(shù)深度:

  • 深度優(yōu)先搜索 (DFS) 與廣度優(yōu)先搜索 (BFS)
  • URL 邊界
  • HTML 下載器
  • 魯棒性
  • 擴(kuò)展
  • 檢測并避免有問題的內(nèi)容

DFS 與 BFS

您可以將 Web 視為有向圖,其中網(wǎng)頁充當(dāng)節(jié)點(diǎn),超鏈接(URL) 作為邊。爬網(wǎng)過程可以看作是從一個(gè) Web 遍歷有向圖頁面給其他人。兩種常見的圖遍歷算法是 DFS 和 BFS。但是,DFS 是通常不是一個(gè)好的選擇,因?yàn)镈FS的深度可能很深。BFS 通常由網(wǎng)絡(luò)爬蟲使用,并由先進(jìn)先出 (FIFO) 實(shí)現(xiàn)隊(duì)列。
在 FIFO 隊(duì)列中,URL 按照其排隊(duì)順序取消排隊(duì)。但是,這實(shí)現(xiàn)有兩個(gè)問題:

  • 來自同一網(wǎng)頁的大多數(shù)鏈接都鏈接回同一主機(jī)。在圖 9-5 中,所有wikipedia.com 中的鏈接是內(nèi)部鏈接,使爬蟲忙于處理 URL來自同一主機(jī) (wikipedia.com)。當(dāng)爬蟲嘗試下載同時(shí),維基百科服務(wù)器將充斥著請求。這被認(rèn)為是“不禮貌”。
    avatar

  • 標(biāo)準(zhǔn) BFS 不考慮 URL 的優(yōu)先級。網(wǎng)絡(luò)很大并非每個(gè)頁面都具有相同的質(zhì)量和重要性水平。因此,我們可能想要根據(jù)URL的頁面排名、網(wǎng)絡(luò)流量、更新頻率等確定URL的優(yōu)先級。
    URL 邊界
    URL 邊界有助于解決這些問題。URL 邊界是一種存儲的數(shù)據(jù)結(jié)構(gòu)要下載的 URL。URL 邊界是確保合理的重要組成部分,URL 優(yōu)先級和新鮮度。書中提到了一些關(guān)于URL前沿的值得注意的論文在參考資料[5] [9]中。這些論文的發(fā)現(xiàn)如下:
    禮貌
    通常,網(wǎng)絡(luò)爬蟲應(yīng)避免向同一托管服務(wù)器發(fā)送過多請求在短時(shí)間內(nèi)。發(fā)送過多的請求被認(rèn)為是“不禮貌”的,甚至被對待作為拒絕服務(wù) (DOS) 攻擊。例如,在沒有任何約束的情況下,爬蟲可以發(fā)送每秒有數(shù)千個(gè)請求發(fā)送到同一個(gè)網(wǎng)站。這可能會使網(wǎng)絡(luò)不堪重負(fù)服務(wù)器。強(qiáng)制禮貌的一般思路是一次從同一頁面下載一頁主機(jī)??梢栽趦蓚€(gè)下載任務(wù)之間添加延遲。禮貌約束是通過維護(hù)從網(wǎng)站主機(jī)名到下載(工作線程)線程的映射來實(shí)現(xiàn)。每個(gè)下載器線程都有一個(gè)單獨(dú)的 FIFO 隊(duì)列,并且僅下載從那個(gè)隊(duì)列。圖 9-6 顯示了這個(gè)隊(duì)列合理(禮貌)的設(shè)計(jì)。
    avatar

  • 隊(duì)列路由器:確保每個(gè)隊(duì)列(b1、b2、…bn) 僅包含來自同一主機(jī)。

  • 映射表:它將每個(gè)主機(jī)映射到一個(gè)隊(duì)列。
    avatar

  • FIFO 隊(duì)列 b1、b2 到 bn:每個(gè)隊(duì)列都包含來自同一主機(jī)的 URL。

  • 隊(duì)列選擇器:每個(gè)工作線程都映射到一個(gè) FIFO 隊(duì)列,并且它只下載該隊(duì)列中的 URL。隊(duì)列選擇邏輯由隊(duì)列選擇器完成。

  • 工作線程 1 到 N。工作線程從同一個(gè)線程中一個(gè)接一個(gè)地下載網(wǎng)頁主機(jī)??梢栽趦蓚€(gè)下載任務(wù)之間添加延遲。

優(yōu)先權(quán)
來自一個(gè)關(guān)于蘋果產(chǎn)品的論壇的隨機(jī)帖子具有非常不同的分量而不是 Apple 主頁上的帖子。盡管它們都有“Apple”關(guān)鍵字,但它是爬蟲首先抓取 Apple 主頁是明智的。我們根據(jù)有用性對 URL 進(jìn)行優(yōu)先級排序,這可以通過 PageRank [10] 來衡量,網(wǎng)站流量、更新頻率等。 “優(yōu)先級排序器”是處理 URL 優(yōu)先級的組件。有關(guān)此概念的深入信息,請參閱參考資料 [5] [10]。圖 9-7 顯示了管理 URL 優(yōu)先級的設(shè)計(jì)。
avatar

  • 優(yōu)先級排序器:它將 URL 作為輸入并計(jì)算優(yōu)先級。
  • 隊(duì)列 f1 到 fn:每個(gè)隊(duì)列都有一個(gè)分配的優(yōu)先級。具有高優(yōu)先級的隊(duì)列是以更高的概率被選中。
  • 隊(duì)列選擇器:隨機(jī)選擇一個(gè)偏向于較高隊(duì)列的隊(duì)列優(yōu)先權(quán)。

圖 9-8 顯示了 URL 邊界設(shè)計(jì),它包含兩個(gè)模塊:

  • 前隊(duì)列:管理優(yōu)先級
  • 后排:管理合理(禮貌)
    avatar

新鮮
網(wǎng)頁不斷地被添加、刪除和編輯。網(wǎng)絡(luò)爬蟲必須定期重新抓取下載的頁面以保持我們的數(shù)據(jù)集最新。重新抓取所有 URL 是時(shí)候了 -消耗和資源密集型。下面列出了一些優(yōu)化新鮮度的策略:

  • 根據(jù)網(wǎng)頁的更新歷史重新抓取。
  • 優(yōu)先考慮URL 并首先且更頻繁地重新抓取重要頁面。

URL Frontier 的存儲
在現(xiàn)實(shí)世界的搜索引擎抓取中,前沿的 URL 數(shù)量可能有數(shù)百個(gè)數(shù)百萬[4]。將所有內(nèi)容放入內(nèi)存既不持久也不可擴(kuò)展。保存磁盤中的所有內(nèi)容都是不受歡迎的,因?yàn)榇疟P速度很慢;它可以很容易地成為爬蟲的瓶頸。

我們采用了混合方法。大多數(shù)URL都存儲在磁盤上,因此存儲空間不是問題。為了降低從磁盤讀取和寫入磁盤的成本,我們在內(nèi)存中維護(hù)緩沖區(qū)以進(jìn)行入隊(duì)/出隊(duì)操作。緩沖區(qū)中的數(shù)據(jù)為定期寫入磁盤。
HTML下載器
HTML 下載器使用 HTTP 協(xié)議從 Internet 下載網(wǎng)頁。
在討論 HTML 下載器之前,我們首先看一下機(jī)器人排除協(xié)議。
Robots.txt
Robots.txt,全稱為機(jī)器人排除協(xié)議,是網(wǎng)站用于通信的標(biāo)準(zhǔn)與爬蟲。它指定允許爬蟲下載哪些頁面。在嘗試之前爬蟲抓取網(wǎng)站時(shí),首先要檢查其對應(yīng)的robots.txt并遵循其規(guī)則。

為了避免重復(fù)下載 robots.txt 文檔,我們緩存該文檔的結(jié)果。該文檔是定期下載并保存到緩存。這是一段 robots.txt 文檔,取自https://www.amazon.com/robots.txt。某些目錄(例如 Creatorhub)是不允許的對于谷歌機(jī)器人。

用戶代理:Googlebot
禁止:/creatorhub/*
禁止:/rss/people//reviews
禁止:/gp/pdp/rss/
/reviews
禁止:/gp/cdp/member-reviews/
禁止:/gp/aw/cr/

除了 robots.txt 之外,性能優(yōu)化是我們將介紹的另一個(gè)重要概念
HTML 下載器。
性能優(yōu)化
以下是 HTML 下載器的性能優(yōu)化列表。
1.分布式抓取
為了獲得高性能,爬蟲作業(yè)被分發(fā)到多臺服務(wù)器上,每臺服務(wù)器運(yùn)行多個(gè)線程。 URL空間被分割成更小的部分;所以,每個(gè)下載者負(fù)責(zé) URL 的子集。圖 9-9 顯示了分布式爬網(wǎng)的示例。
在這里插入圖片描述
2.緩存DNS解析器
DNS 解析器是爬蟲的瓶頸,因?yàn)?DNS 請求可能會由于以下原因而花費(fèi)時(shí)間:許多 DNS 接口的同步特性。 DNS 響應(yīng)時(shí)間范圍從 10 毫秒到200毫秒。一旦某個(gè)爬蟲線程執(zhí)行了對 DNS 的請求,其他線程就會被阻塞直到第一個(gè)請求完成。
維護(hù)我們的 DNS 緩存以避免調(diào)用 DNS頻繁是速度優(yōu)化的有效技術(shù)。我們的 DNS 緩存保留域名名稱到 IP 地址的映射,并由 cron 作業(yè)定期更新。
3. 地點(diǎn)
按地理位置分布爬網(wǎng)服務(wù)器。當(dāng)爬行服務(wù)器距離網(wǎng)站主機(jī)較近時(shí),爬蟲體驗(yàn)更快的下載時(shí)間。設(shè)計(jì)局部性適用于系統(tǒng)的大部分組件:爬取服務(wù)器、緩存、隊(duì)列、存儲等。
4、超時(shí)時(shí)間短
一些網(wǎng)絡(luò)服務(wù)器響應(yīng)緩慢或者可能根本不響應(yīng)。為了避免長時(shí)間等待,指定了最長等待時(shí)間。如果主機(jī)在預(yù)定時(shí)間內(nèi)沒有響應(yīng),爬蟲將停止該作業(yè)并爬取其他一些頁面。
魯棒性
除了性能優(yōu)化之外,魯棒性也是一個(gè)重要的考慮因素。我們提出提高系統(tǒng)魯棒性的幾種方法:

  • 一致的散列:這有助于在下載者之間分配負(fù)載。一個(gè)新的可以使用一致性哈希來添加或刪除下載服務(wù)器。參見第五章:設(shè)計(jì)一致的哈希以獲取更多細(xì)節(jié)。
  • 保存爬網(wǎng)狀態(tài)和數(shù)據(jù):為了防止失敗,爬網(wǎng)狀態(tài)和數(shù)據(jù)被寫入一個(gè)存儲系統(tǒng)。通過加載保存的狀態(tài)可以輕松重新啟動(dòng)中斷的爬網(wǎng)數(shù)據(jù)。
  • 異常處理:在大型系統(tǒng)中,錯(cuò)誤是不可避免且常見的。這爬蟲必須優(yōu)雅地處理異常而不導(dǎo)致系統(tǒng)崩潰。
  • 數(shù)據(jù)驗(yàn)證:這是防止系統(tǒng)錯(cuò)誤的重要措施。

可擴(kuò)展性
隨著幾乎每個(gè)系統(tǒng)的發(fā)展,設(shè)計(jì)目標(biāo)之一就是使系統(tǒng)變得靈活足以支持新的內(nèi)容類型。爬蟲可以通過插入新的擴(kuò)展模塊。圖9-10顯示了如何添加新模塊。
在這里插入圖片描述

  • 插入 PNG 下載器模塊以下載 PNG 文檔。
  • 添加Web監(jiān)控模塊,監(jiān)控網(wǎng)頁,防止版權(quán)和商標(biāo)侵權(quán)。

檢測并避免有問題的內(nèi)容本節(jié)討論如何檢測和預(yù)防冗余、無意義或有害的內(nèi)容。
1. 冗余內(nèi)容
如前所述,近 30% 的網(wǎng)頁是重復(fù)的。哈希值或校驗(yàn)和幫助檢測重復(fù) [11]。
2. 蜘蛛陷阱
蜘蛛陷阱是導(dǎo)致爬蟲無限循環(huán)的網(wǎng)頁。例如,無窮深層目錄結(jié)構(gòu)如下:
www.spidertrapexample.com/foo/bar/foo/bar/foo/bar/…
可以通過為 URL 設(shè)置最大長度來避免此類蜘蛛陷阱。然而,沒有人-存在適合所有尺寸的解決方案來檢測蜘蛛陷阱。包含蜘蛛陷阱的網(wǎng)站很容易由于在此類網(wǎng)站上發(fā)現(xiàn)了異常大量的網(wǎng)頁而進(jìn)行識別。它是難以開發(fā)自動(dòng)算法來避免蜘蛛陷阱;但是,用戶可以手動(dòng)驗(yàn)證并識別蜘蛛陷阱,然后從爬蟲中排除這些網(wǎng)站或應(yīng)用一些自定義的 URL 過濾器。
3.數(shù)據(jù)噪聲
有些內(nèi)容幾乎沒有價(jià)值,例如廣告、代碼片段、垃圾郵件URL 等。這些內(nèi)容對爬蟲沒有用處,應(yīng)盡可能排除。

第 4 步 - 結(jié)束

在本章中,我們首先討論了一個(gè)好的爬蟲的特征:可擴(kuò)展性、人性(禮貌)、可擴(kuò)展性和健壯性。然后,我們提出了一個(gè)設(shè)計(jì)方案,并討論了關(guān)鍵組件。構(gòu)建可擴(kuò)展的網(wǎng)絡(luò)爬蟲并非易事,因?yàn)榫W(wǎng)絡(luò)非常龐大,而且到處都是陷阱。盡管我們已經(jīng)涵蓋了許多話題,但我們?nèi)匀诲e(cuò)過了許多相關(guān)的談話積分:

  • 服務(wù)器端渲染:許多網(wǎng)站使用 JavaScript、AJAX 等腳本來即時(shí)生成鏈接。如果我們直接下載和解析網(wǎng)頁,我們將無法檢索動(dòng)態(tài)生成的鏈接。為了解決這個(gè)問題,我們執(zhí)行服務(wù)器端在解析頁面之前先渲染(也稱為動(dòng)態(tài)渲染)[12]。
  • 過濾掉不需要的頁面:憑借有限的存儲容量和抓取資源,反垃圾郵件組件有助于過濾掉低質(zhì)量和垃圾頁面 [13] [14]。
  • 數(shù)據(jù)庫復(fù)制和分片:復(fù)制和分片等技術(shù)用于提高數(shù)據(jù)層的可用性、可擴(kuò)展性和可靠性。
  • 水平擴(kuò)展:對于大規(guī)模爬蟲,數(shù)百甚至數(shù)千臺服務(wù)器是需要執(zhí)行下載任務(wù)。關(guān)鍵是保持服務(wù)器無狀態(tài)。
  • 可用性、一致性和可靠性:這些概念是任何大型系統(tǒng)的成功。我們在第 1 章中詳細(xì)討論了這些概念。刷新你的關(guān)于這些主題的記憶。
  • 分析:收集和分析數(shù)據(jù)是任何系統(tǒng)的重要組成部分,因?yàn)閿?shù)據(jù)是微調(diào)的關(guān)鍵成分。

恭喜你走到這一步!鼓勵(lì)下自己。干得好!

參考資料
[1] 美國國會圖書館:https://www.loc.gov/websites/
[2] 歐盟網(wǎng)絡(luò)檔案館:http://data.europa.eu/webarchive
[3] Digimarc:https://www.digimarc.com/products/digimarc-services/piracy-intelligence
[4] Heydon A., Najork M. Mercator:可擴(kuò)展、可擴(kuò)展的網(wǎng)絡(luò)爬蟲萬維網(wǎng),2(4) (1999),第219-229頁
[5] 作者:Christopher Olston、Marc Najork:網(wǎng)絡(luò)爬蟲http://infolab.stanford.edu/~olston/publications/crawling_survey.pdf
[6] 29% 的網(wǎng)站面臨重復(fù)內(nèi)容問題:https://tinyurl.com/y6tmh55y
[7] Rabin M.O. 等人。隨機(jī)多項(xiàng)式指紋識別 Center for Research in大學(xué)艾肯計(jì)算實(shí)驗(yàn)室計(jì)算技術(shù)(1981)
[8] B. H. Bloom,“具有允許誤差的哈希編碼中的空間/時(shí)間權(quán)衡”,《ACM通訊》,第13卷,第7期,第422-426頁,1970年。
[9] 唐納德·帕特森(Donald J. Patterson),網(wǎng)絡(luò)爬蟲:https://www.ics.uci.edu/~lopes/teaching/cs221W12/slides/Lecture05.pdf
[10] L. Page、S. Brin、R. Motwani 和 T. Winograd,“PageRank 引文排名:為網(wǎng)絡(luò)帶來秩序,“技術(shù)報(bào)告,斯坦福大學(xué),1998.
[11] 伯頓·布魯姆。哈希編碼中的空間/時(shí)間權(quán)衡與允許的誤差。ACM 通訊,13(7),第 422–426 頁,1970 年 7 月。
[12] 谷歌動(dòng)態(tài)渲染:
https://developers.google.com/search/docs/guides/dynamic-rendering
[13] T. Urvoy、T. Lavergne 和 P. Filoche,“使用隱藏樣式跟蹤網(wǎng)絡(luò)垃圾郵件相似性“,載于第二屆對抗性信息國際研討會論文集網(wǎng)絡(luò)上檢索,2006 年。
[14] H.-T.Lee、D. Leonard、X. Wang 和 D. Loguinov,“IRLbot:擴(kuò)展到 60 億頁及其他“,第 17 屆國際萬維網(wǎng)會議論文集,2008 年。

http://m.aloenet.com.cn/news/35447.html

相關(guān)文章:

  • 成品app直播源碼旅游企業(yè)seo官網(wǎng)分析報(bào)告
  • 淘寶客網(wǎng)站能用淘寶圖標(biāo)做標(biāo)志嗎網(wǎng)站推廣的軟件
  • 建設(shè)公司網(wǎng)站管理制度的意義百度網(wǎng)站推廣教程
  • 怎么自己建設(shè)網(wǎng)站品牌推廣的步驟和技巧
  • 寧波網(wǎng)站建設(shè)哪家公司好代運(yùn)營
  • 網(wǎng)頁美工設(shè)計(jì)需求分析網(wǎng)站快速優(yōu)化排名軟件
  • 專業(yè)網(wǎng)網(wǎng)站建設(shè)品牌推廣與傳播
  • 建設(shè)廳官方網(wǎng)站北京網(wǎng)站seo李守洪排名大師
  • 畢業(yè)設(shè)計(jì)網(wǎng)站開發(fā)實(shí)施步驟鄭州seo排名第一
  • 包裝產(chǎn)品做網(wǎng)站線上推廣策略
  • 凡科做的網(wǎng)站好垃圾信息如何優(yōu)化上百度首頁公司
  • 網(wǎng)站做下載wordpress自己做seo網(wǎng)站推廣
  • 免費(fèi)建網(wǎng)站.com的區(qū)別直播營銷策略有哪些
  • wdcp wordpress長春seo結(jié)算
  • 網(wǎng)站建設(shè)歷史網(wǎng)站推廣公司排名
  • 全國工程信息網(wǎng)優(yōu)化方案怎么寫
  • 成都建站seo百度關(guān)鍵詞排名優(yōu)化
  • 自己用鋼管做里閃彈槍視頻和照網(wǎng)站b站視頻推廣
  • 網(wǎng)站美工做專題尺寸多少?如何快速推廣網(wǎng)上國網(wǎng)
  • 合肥網(wǎng)絡(luò)科技有限公司做網(wǎng)站短視頻推廣渠道
  • 用照片做模板下載網(wǎng)站好廣告推廣費(fèi)用
  • 大連做網(wǎng)站誰家售后好整站關(guān)鍵詞快速排名
  • 網(wǎng)站公安備案網(wǎng)址寧波seo優(yōu)化公司
  • 辦公室租賃seo查詢友情鏈接
  • 建設(shè)網(wǎng)站的規(guī)則廣州私人做網(wǎng)站
  • 軟件論壇網(wǎng)站有哪些百度推廣河南總部
  • 注冊網(wǎng)站費(fèi)屬于什么費(fèi)用智慧軟文
  • 網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師屬于高級職稱嗎北京網(wǎng)站優(yōu)化指導(dǎo)
  • 如何做全景素材網(wǎng)站網(wǎng)絡(luò)營銷的幾種模式
  • 深圳電子商務(wù)網(wǎng)站建設(shè)百度關(guān)鍵詞優(yōu)化快速排名軟件