網路爬蟲，也叫網路蜘蛛，是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。 網路搜尋引擎等站點透過爬蟲軟體更新自身的或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來，以便搜尋引擎事後生成供使用者搜尋。 爬蟲訪問網站的過程會消耗目標系統資源。不少網路系統並不默許爬蟲工作。因此在訪問大量頁面時，爬蟲需要考慮到規劃、負載，還需要講 禮貌。 不願意被爬蟲訪問、被爬蟲主人知曉的公開站點可以使用 robotstxt 檔案之類的方法避免訪問。這個檔案可以要求只對網站的一部分進行索引，或完全不作處理。 網際網路上的頁面極多，即使是最大的爬蟲系統也無法做出完整的索引。因此在公元 2000 年之前的全球資訊網出現初期，搜尋引擎經常找不到多少相關結果。現在的搜尋引擎在這方面已經進步很多，能夠即刻給出高素質結果。 爬蟲還可以驗證超連結和 HTML 程式碼，用於網路抓取（參見資料驅動程式設計）。 命名 網路爬蟲也可稱作網路蜘蛛、螞蟻、自動索引程式 ，或（在軟體中）稱為網路疾走。參見 FOAF 專案 wiki 對 scutter 的描述 概述 網路爬蟲始於一張被稱作種子的統一資源地址（URL）列表。當網路爬蟲訪問這些統一資源定位器時，它們會甄別出頁面上所有的超連結，並將它們寫入一張 待訪列表，即所謂。此疆域上的 URL 將會被按照一套策略迴圈來訪問。如果爬蟲在執行的過程中複製歸檔和儲存網站上的資訊，這些檔案通常儲存，使他們可以較容易的被檢視。閱讀和瀏覽他們儲存的網站上並即時更新的資訊，這些被儲存的網頁又被稱為 快照。越大容量的網頁意味著網路爬蟲只能在給予的時間內下載越少部分的網頁，所以要優先考慮其下載。高變化率意味著網頁可能已經被更新或者被取代。一些伺服器端軟體生成的 URL（統一資源定位符）也使得網路爬蟲很難避免檢索到重複內容。 但是網際網路的資源卷帙浩繁，這也意味著網路爬蟲只能在一定時間內下載有限數量的網頁，因此它需要衡量優先順序的下載方式。有時候網頁出現、更新和消失的速度很快，也就是說網路爬蟲下載的網頁在幾秒後就已經被修改或甚至刪除了。這些都是網路爬蟲設計師們所面臨的兩個問題。 再者，伺服器端軟體所生成的統一資源地址數量龐大，以致網路爬蟲難免也會採集到重複的內容。根據超文字傳輸協定，無盡組合的引數所返回的頁面中，只有很少一部分確實傳回正確的內容。例如：數張快照陳列室的網站，可能通過幾個引數，讓使用者選擇相關快照：其一是透過四種方法對快照排序，其二是關於快照解析度的的三種選擇，其三是兩種檔案格式，另加一個使用者可否提供內容的選擇，這樣對於同樣的結果會有 48 種（432）不同的統一資源地址與其關聯。這種數學組合替網路爬蟲造成了麻煩，因為它們必須越過這些無關指令碼變化的組合，尋找不重複的內容。 爬蟲策略 爬蟲的實現由以下策略組成： 指定頁面下載的選擇策略 檢測頁面是否改變的重新訪問策略 定義如何避免網站過度訪問的約定性策略 如何部署分散式網路爬蟲的並行策略 選擇策略 連結跟隨限制 爬蟲可能只想搜尋 HTML 頁面而避免其他 MIME 型別。為了只請求 HTML 資源，爬蟲在抓取整個以 GET 方式請求的資源之前，透過建立 HTTP 的 HEAD 請求來決定網路資源的 MIME 型別。為了避免發出過多的請求，爬蟲會檢查 URL 和只請求那些以某些字元（如html htm asp aspx php jsp jspx 或 ）作為字尾的 URL。這個策略可能會跳過很多 HTML 網路資源。 為了避免掉入從網站下載無限量的 URL 的爬蟲陷阱，有些爬蟲還能避免請求一些帶有 的資源（動態生成）。不過假若網站重寫 URL 以簡化 URL 的目的，這個策略就變得不可靠了。 URL 規範化 爬蟲通常使用某些 URL 規範化的方式以避免資源的重複爬取。URL 規範化，指的是以某種一致的方式修改和標準化 URL 的過程。這個過程有各種各樣的處理規則，包括統一轉換為小寫、移除 和 片段，以及在非空路徑裡插入斜杆。 路徑上移爬取 有些爬蟲希望從指定的網站中儘可能地爬取資源。而路徑上移爬蟲就是為了能爬取每個 URL 裡提示出的每個路徑。 例如，給定一個 Http 的種子 URL httpllamaorghamstermonkeypagehtml ，要爬取 hamstermonkey ， hamster 和 。Cothey 發現路徑能非常有效地爬取獨立的資源，或以某種規律無法在站內連結爬取到的資源。 主題爬取 對於爬蟲來說，一個頁面的重要性也可以說是，給定查詢條件一個頁面相似效能起到的作用。網路爬蟲要下載相似的網頁被稱為主題爬蟲或區域性爬蟲。這個主題爬蟲或區域性爬蟲的概念第一次被 Filippo MenczerMenczer F 1997 ARACHNID Adaptive Retrieval Agents Choosing Heuristic Neighborhoods for Information Discovery In D Fisher ed Machine Learning Proceedings of the 14th International Conference ICML97 Morgan KaufmannMenczer F and Belew RK 1998 Adaptive Information Agents in Distributed Textual Environments In K Sycara and M Wooldridge eds Proc 2nd Intl Conf on Autonomous Agents Agents 98 ACM Press 和 Soumen Chakrabarti 等人提出的。Chakrabarti S van den Berg M and Dom B 1999 Focused crawling a new approach to topicspecific web resource discovery Computer Networks 31 111616231640 重新訪問策略 網站的屬性之一就是經常動態變化，而爬取網站的一小部分往往需要花費幾個星期或者幾個月。等到網站爬蟲完成它的爬取，很多事件也已經發生了，包括增加、更新和刪除。 在搜尋引擎的角度，因為沒有檢測這些變化，會導致儲存了過期資源的代價。最常用的估價函式是新鮮度和過時性。 新鮮度：這是一個衡量抓取內容是不是準確的二元值。在時間 t 內，倉庫中頁面 p 的新鮮度是這樣定義的： F_p t begin cases 1 rm ifprmisequaltothelocalcopyattimet 0 rm otherwise end cases 過時性：這是一個衡量本地已抓取的內容過時程度的指標。在時間 t 時，倉庫中頁面 p 的時效性的定義如下： A_p t begin cases 0 rm ifprmisnotmodifiedattimet t rm modificationtimeofp rm otherwise end cases 平衡禮貌策略 爬蟲相比於人，可以有更快的檢索速度和更深的層次，所以，他們可能使一個站點癱瘓。不需要說一個單獨的爬蟲一秒鐘要執行多條請求，下載大的檔案。一個伺服器也會很難響應多執行緒爬蟲的請求。 就像 Koster 所注意的那樣，爬蟲的使用對很多工作都是很有用的，但是對一般的社群，也需要付出代價。使用爬蟲的代價包括： 網路資源：在很長一段時間，爬蟲使用相當的頻寬高度並行地工作。 伺服器超載：尤其是對給定伺服器的訪問過高時。 質量糟糕的爬蟲，可能導致伺服器或者路由器癱瘓，或者會嘗試下載自己無法處理的頁面。 個人爬蟲，如果過多的人使用，可能導致網路或者伺服器阻塞。 對這些問題的區域性解決方法是漫遊器排除協議（Robots exclusion protocol），也被稱為 robotstxt 議定書 Koster M 1996 A standard for robot exclusion ，這份協議是讓管理員指明網路伺服器的不應該爬取的約定。這個標準沒有包括重新訪問一臺伺服器的間隔的建議，雖然設定訪問間隔是避免伺服器超載的最有效辦法。最近的商業搜尋引擎，如 Google，Ask Jeeves，MSN 和 Yahoo 可以在 robotstxt 中使用一個額外的 Crawldelay 引數來指明請求之間的延遲。 並行策略 一個並行爬蟲是並行執行多個程序的爬蟲。它的目標是最大化下載的速度，同時儘量減少並行的開銷和下載重複的頁面。為了避免下載一個頁面兩次，爬蟲系統需要策略來處理爬蟲執行時新發現的 URL，因為同一個 URL 地址，可能被不同的爬蟲程序抓到。 另見 robotstxt：放在網頁伺服器上，告知網路蜘蛛哪些頁面內容可取得或不可取得。 Scrapy 參考文獻 Category 軟體 Category 網路機器人 Category 網路搜尋引擎