

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 道德網路爬蟲程式的最佳實務
<a name="best-practices"></a>

本節討論建置 Web 爬蟲應用程式以收集環境、社會和治理 (ESG) 資料的最佳實務和關鍵道德考量。透過遵循這些最佳實務，您可以保護您的專案和組織，並促進更負責任且永續的 Web 生態系統。這種方法可協助您存取寶貴的資料，並以尊重所有利益相關者的方式將其用於研究、業務和創新。

## Robots.txt 合規
<a name="best-practices-robots"></a>

robots.txt 檔案用於網站，以與 Web 爬蟲程式和機器人進行通訊，了解哪些部分應該存取或不應存取。當 Web 爬蟲程式在網站上遇到 robots.txt 檔案時，它會剖析指示並相應地調整其爬蟲行為。這可防止爬蟲程式違反網站擁有者的指示，並維持網站與爬蟲程式之間的合作關係。因此，bots.txt 檔案有助於存取控制、保護敏感內容、負載管理和法律合規。

建議您遵循下列最佳實務：
+ 請務必檢查並遵守 robots.txt 檔案中的規則。
+ 爬取任何 URL 之前，請檢查桌面和行動使用者代理程式的規則。
+ 如果網站僅允許行動使用者代理程式，請針對您的請求使用不同的代理程式標頭，例如行動代理程式標頭。

沒有 robots.txt 檔案不一定表示您無法或不應抓取網站。爬蟲應一律以負責任的方式完成，遵守網站的資源和擁有者的隱含權利。當 robots.txt 不存在時，以下是建議的最佳實務：
+ 假設允許爬取，但請謹慎進行。
+ 實作禮貌的爬蟲實務。
+ 如果您打算執行大量爬取，請考慮聯絡網站擁有者以取得許可。

## 爬蟲速率限制
<a name="best-practices-crawl-rate"></a>

使用合理的網路爬取率，以避免伺服器過載。依 robots.txt 檔案或使用隨機延遲，在請求之間實作延遲。對於中小型網站，每 10-15 秒 1 次請求可能是適當的。對於較大的網站或具有明確爬蟲許可的網站，每秒 1-2 個請求可能是適當的。

## 使用者代理程式透明度
<a name="best-practices-user-agent"></a>

在使用者代理程式標頭中識別您的爬蟲程式。此 HTTP 標頭資訊旨在識別請求內容的裝置。一般而言， *機器人*一詞會包含在 代理程式的名稱中。爬蟲程式和其他機器人有時會使用 標頭中的重要欄位來包含聯絡資訊。

## 高效爬取
<a name="best-practices-site-map"></a>

使用網站擁有者開發的網站地圖，以專注於重要頁面。

## 自適應方法
<a name="best-practices-adaptive"></a>

如果桌面版本失敗，請將爬蟲程式設定為切換到行動使用者代理程式。這可以提供爬蟲程式存取，並減少網站伺服器上的壓力。

## 錯誤處理
<a name="best-practices-error-handling"></a>

確定爬蟲程式適當地處理各種 HTTP 狀態碼。例如，如果爬蟲程式遇到 429 狀態碼 (「請求太多」)，則爬蟲程式應暫停。如果爬蟲程式持續收到 403 個狀態碼 (「禁止」)，請考慮停止爬蟲。

## 批次爬取
<a name="best-practices-batches"></a>

我們建議您進行下列動作：
+ 將任務分成較小的批次，而不是一次爬取所有 URLs。這有助於分配負載並降低遇到問題的風險，例如逾時或資源限制。
+ 如果預期整體爬蟲任務會長時間執行，請考慮將其分成多個更小、更易於管理的任務。這可讓程序更具可擴展性和彈性。
+ 如果要爬取URLs 數量相對較小，請考慮使用無伺服器解決方案，例如 AWS Lambda。Lambda 函數非常適合短期的事件驅動型任務，因為它們會自動擴展和處理資源管理。

## 安全
<a name="best-practices-security"></a>

對於網路爬取運算任務，我們建議您將環境設定為僅允許傳出流量。這有助於透過將攻擊面降至最低並降低未經授權的傳入存取風險來增強安全性。僅允許傳出連線可讓爬蟲程序與目標網站通訊並擷取必要的資料，並限制任何可能危害系統的傳入流量。

## 其他考量
<a name="best-practices-other-considerations"></a>

檢閱下列其他考量事項和最佳實務：
+ 檢查網站服務條款或隱私權政策中的爬取準則。
+ 在 HTML 中尋找可能提供爬蟲指令的`meta`標籤。
+ 請注意您所在司法管轄區有關資料收集和使用的法律限制。
+ 如果網站擁有者要求，請準備好停止爬取。