

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

# Web 爬蟲程式整合
<a name="web-crawler-integration"></a>

透過 Amazon Quick 中的 Web Crawler 整合，您可以透過編目和編製網頁索引，從網站內容建立知識庫。此整合支援具有不同身分驗證選項的資料擷取功能。

## Web 爬蟲程式功能
<a name="web-crawler-integration-capabilities"></a>

Web Crawler 使用者可以針對存放在網站和網頁上的內容提出問題。例如，使用者可以跨多個網頁搜尋文件網站、知識庫或特定資訊。

整合可協助使用者存取和了解 Web 內容，無論其位置或類型為何。它提供內容詳細資訊，例如發佈日期、修改歷史記錄和頁面擁有權，以實現更有效率的資訊探索。

**注意**  
Web 爬蟲程式整合僅支援資料擷取。它不提供管理網站或 Web 服務的動作功能。

## 先決條件
<a name="web-crawler-integration-prerequisites"></a>

設定 Web Crawler 整合之前，請確定您有下列項目：
+ 要編目和編製索引的網站 URLs。
+ Amazon Quick Enterprise 訂閱。
+ 不在防火牆後方且不需要特殊瀏覽器外掛程式即可連線的網站。

## 準備網站存取和身分驗證
<a name="web-crawler-integration-authentication"></a>

在 Amazon Quick 中設定整合之前，請準備您的網站存取憑證。Web 爬蟲程式整合支援不同的身分驗證方法：

**無身分驗證**  
使用 來爬取不需要身分驗證的網站。

**基本身分驗證**   
安全網站的標準 HTTP 基本身分驗證。當您造訪受保護的網站時，您的瀏覽器會顯示一個對話方塊，要求您提供登入資料。  
**必要的登入資料：**  
+ **登入頁面 URL** - 登入頁面的 URL
+ **使用者名稱** - 基本身分驗證使用者名稱
+ **密碼** - 基本身分驗證密碼

**表單驗證**   
對於使用 HTML 表單型登入頁面的網站。您可以指定 XPath 表達式來識別登入頁面上的表單欄位。  
XPath (XML 路徑語言） 是一種查詢語言，用於導覽 HTML 或 XML 文件中的元素。若要尋找網頁元素的 XPath，請在瀏覽器中的 元素上按一下滑鼠右鍵，然後選擇**檢查**。在開發人員工具中，在反白顯示的 HTML 程式碼上按一下滑鼠右鍵，選擇**複製**，然後選擇**複製 XPath**。  
**必要資訊：**  
+ **登入頁面 URL** - 登入表單的 URL （例如 `https://example.com/login`)
+ **使用者名稱** - 登入使用者名稱
+ **密碼** - 登入密碼
+ **使用者名稱欄位 XPath** - XPath 到使用者名稱輸入欄位 （例如，`//input[@id='username']`)
+ **使用者名稱按鈕 XPath** （選用） - XPath 到使用者名稱按鈕欄位 （例如，`//input[@id='username_button']`)
+ **密碼欄位 XPath** - XPath 到密碼輸入欄位 （例如，`//input[@id='password']`)
+ **密碼按鈕 XPath** - XPath 到密碼按鈕 （例如，`//button[@type='password']`)

**SAML 身分驗證**  
對於使用 SAML 型單一登入 (SSO) 身分驗證的網站。  
SAML （安全性聲明標記語言） 身分驗證是一種啟用 SSO 的聯合身分標準。使用者透過集中式身分提供者 （例如 Microsoft Azure AD 或 Okta) 進行身分驗證，而不是直接在每個應用程式中輸入登入資料。身分提供者會將安全字符傳遞回應用程式，以授予存取權。  
**必要資訊：**  
+ **登入頁面 URL** - SAML 登入頁面的 URL
+ **使用者名稱** - SAML 使用者名稱
+ **密碼** - SAML 密碼
+ **使用者名稱欄位 XPath** - XPath 到使用者名稱輸入欄位 （例如，`//input[@id='username']`)
+ **使用者名稱按鈕 XPath** （選用） - XPath 到使用者名稱按鈕欄位 （例如，`//input[@id='username_button']`)
+ **密碼欄位 XPath** - XPath 到密碼輸入欄位 （例如，`//input[@id='password']`)
+ **密碼按鈕 XPath** - XPath 到密碼按鈕 （例如，`//button[@type='password']`)

### XPath 組態範例
<a name="web-crawler-xpath-examples"></a>

使用這些 XPath 範例來設定表單和 SAML 身分驗證：

```
Username field examples:
//input[@id='username']
//input[@name='user']
//input[@class='username-field']

Password field examples:
//input[@id='password']
//input[@name='pass']
//input[@type='password']

Submit button examples:
//button[@type='submit']
//input[@type='submit']
//button[contains(text(), 'Login')]
```

## 設定 Web 爬蟲程式整合
<a name="web-crawler-integration-setup"></a>

準備網站存取需求後，請在 Amazon Quick 中建立 Web Crawler 整合。

1. 在 Amazon Quick 主控台中，選擇**整合**。

1. 從整合選項中選擇 **Web 爬蟲程式**，然後按一下**新增**按鈕 （加 "\$1" 按鈕）。

1. 選擇**從 Web 爬蟲程式存取資料**。Web Crawler 整合僅支援資料存取 - 動作執行不適用於 Web 爬取。

1. 設定整合詳細資訊和身分驗證方法，然後視需要建立知識庫。

   1. 選擇 Web 爬蟲程式整合的身分驗證類型。

   1. 根據您選擇的身分驗證方法輸入必要的詳細資訊。

   1. （選用） 選擇 VPC 連線至私有網路中託管的爬蟲網站。您必須先在管理員設定中設定 VPC 連線，才能在此處進行選擇。如需詳細資訊，請參閱[設定要與 Amazon Quick 搭配使用的 VPC](vpc-setup-for-quicksight.md)。
**注意**  
建立整合之後，您無法變更 VPC 連線。若要使用不同的 VPC 連線，請建立新的整合。

   1. 選擇**建立並繼續**。

   1. 輸入知識庫的名稱和描述。

   1. 新增您要編目的內容 URLs。

   1. 選擇**建立**。

選擇**建立**後，資料同步會自動開始。

## 設定爬取
<a name="web-crawler-integration-configuration"></a>

您可以設定要爬取的網站和頁面，以及如何篩選內容。

### 設定 URLs和內容來源
<a name="web-crawler-url-configuration"></a>

設定要爬取的網站和頁面：

#### 直接 URLs
<a name="web-crawler-direct-urls"></a>

指定要爬取URLs：

```
https://example.com/docs
https://example.com/blog
https://example.com/support
```

**限制：**每個資料集最多 10 URLs 

### 內容篩選條件和網路爬取設定
<a name="web-crawler-content-filters"></a>

#### 爬蟲範圍設定
<a name="web-crawler-crawl-scope-settings"></a>

 若要檢視這些設定，您必須先設定知識庫，然後檢查進階設定選項。

**爬蟲深度**  
+ 範圍：0-10 （預設值：1)
+ 0 = 僅爬取指定的 URLs
+ 1 = 將連結頁面納入一層深
+ 較高的值遵循更深入網站的連結

**每個頁面的連結上限**  
+ 預設：1000
+ 上限：1,000
+ 控制每個頁面要遵循多少連結

**Wait (等待)** 階段  
+ 預設：1
+ Web 爬蟲程式在頁面到達就緒狀態後等待每個頁面的時間 （以秒為單位）。針對具有在主要範本之後載入的動態 JavaScript 內容的頁面，增加此值。

## 管理知識庫
<a name="web-crawler-integration-knowledge-base"></a>

設定 Web 爬蟲程式整合之後，您可以從爬蟲網站內容建立和管理知識庫。

### 編輯現有的知識庫
<a name="web-crawler-edit-knowledge-base"></a>

您可以修改現有的 Web Crawler 知識庫：

1. 在 Amazon Quick 主控台中，選擇**知識庫**。

1. 從清單中選擇您的 Web 爬蟲程式知識庫。

1. 選擇**動作**下的三點圖示，然後選擇**編輯知識庫**。

1. 視需要更新您的組態設定，然後選擇**儲存**。

### 附件和檔案爬取
<a name="web-crawler-attachments"></a>

控制系統是否處理從網頁連結的檔案和附件：
+ **啟用檔案連接網路爬取** – 選擇此選項可網路爬取和索引網頁上的檔案和連接，例如 PDFs、文件和媒體檔案。

### 爬取行為和同步組態
<a name="web-crawler-crawling-behavior"></a>

您的 Web 爬蟲程式整合遵循下列爬蟲實務：
+ **增量同步模型：**第一次同步會執行完整網路爬取。後續同步只會擷取變更。
+ **自動重試：**失敗請求的內建重試邏輯。
+ **重複處理：**自動偵測和重複刪除 URLs。
+ 爬**蟲程式識別：**使用請求標頭中的 user-agent 字串 "aws-quick-on-behalf-of-<UUID>" 來識別自己。

#### 網站地圖探索
<a name="web-crawler-sitemap-discovery"></a>

Web 爬蟲程式會自動檢查網站地圖，方法是將常見的網站地圖路徑附加到您的種子 URLs。您不需要另外提供網站地圖 URLs。會檢查下列路徑：

```
sitemap.xml
sitemap_index.xml
sitemap/sitemap.xml
sitemap/sitemap_index.xml
sitemaps/sitemap.xml
sitemap/index.xml
```

例如，如果您的種子 URL 是 `https://example.com/docs`，爬蟲程式會檢查 `https://example.com/docs/sitemap.xml`、 `https://example.com/docs/sitemap_index.xml`等。

**注意**  
Web 爬蟲程式不會遵循遞迴網站地圖索引參考。只會使用在探索到的網站地圖中直接列出的 URLs。robots.txt 中的 Sitemap 指令不會用於 sitemap 探索。

#### Robots.txt 合規
<a name="web-crawler-robots-compliance"></a>

Web Crawler 遵守 robots.txt 通訊協定，遵守使用者代理程式和允許/不允許指令。這可讓您控制爬蟲程式存取網站的方式。

##### robots.txt 檢查的運作方式
<a name="web-crawler-robots-behavior"></a>
+ **主機層級檢查：**Web Crawler 讀取主機層級的 robots.txt 檔案 （例如 example.com/robots.txt)
+ **多個主機支援：**對於具有多個主機的網域，Web Crawler 會分別遵守每個主機的機器人規則
+ **備用行為：**如果 Web 爬蟲程式因為封鎖、剖析錯誤或逾時而無法擷取 robots.txt，其行為就好像 robots.txt 不存在一樣。在此情況下，爬蟲程式會繼續爬取網站。

##### 支援的 robots.txt 欄位
<a name="web-crawler-robots-fields"></a>

Web Crawler 會辨識這些 robots.txt 欄位 （欄位名稱不區分大小寫，值區分大小寫）：

`user-agent`  
識別規則適用的爬蟲程式。

`allow`  
可能爬取的 URL 路徑。

`disallow`  
可能無法爬取的 URL 路徑。

`crawl-delay`  
在網站請求之間等待的時間 （以秒為單位）。

#### 中繼標籤支援
<a name="web-crawler-meta-tags"></a>

Web Crawler 支援頁面層級機器人中繼標籤，可用來控制資料的使用方式。您可以在 HTML 頁面或 HTTP 標頭中包含中繼標籤，以指定頁面層級設定。

##### 支援的中繼標籤
<a name="web-crawler-supported-meta-tags"></a>

`noindex`  
請勿為頁面編製索引。如果您未指定此規則，頁面可能會編製索引，並有資格出現在體驗中。

`nofollow`  
請勿遵循此頁面上的連結。如果您未指定此規則，Web 爬蟲程式可能會使用頁面上的連結來探索這些連結頁面。

您可以使用逗號組合多個值 （例如，「noindex， nofollow」)。

**注意**  
若要偵測中繼標籤，Web 爬蟲程式必須存取您的頁面。不要使用 robots.txt 封鎖您的頁面，因為這可防止頁面被回收。

## 疑難排解
<a name="web-crawler-integration-troubleshooting"></a>

使用本節來解決 Web Crawler 整合的常見問題。

### 身分驗證失敗
<a name="web-crawler-authentication-failures"></a>

**徵狀：**
+ 「無法驗證」錯誤訊息
+ 401/403 HTTP 回應
+ 登入頁面重新導向迴圈
+ 工作階段逾時錯誤

**解決步驟：**

1. 確認可從設定 Amazon Quick 執行個體 AWS 的區域存取網站。

1. 確認您的登入資料正確且尚未過期。

1. 檢查身分驗證端點可用性和可存取性。

1. 在瀏覽器開發人員工具中測試 XPath 組態，以驗證 XPath 組態。

1. 檢閱瀏覽器網路日誌以了解身分驗證流程。

1. 確保登入頁面 URL 正確且可存取。

1. 使用相同的登入資料手動測試身分驗證。

### 存取和連線問題
<a name="web-crawler-access-issues"></a>

**徵狀：**
+ 連線逾時和網路錯誤
+ 網路無法連線的錯誤
+ DNS 解析失敗

**解決步驟：**

1. 驗證與目標網站的網路連線。

1. 驗證網站可存取性：
   + 檢查目標網域的 DNS 解析。
   + 驗證 SSL/TLS 組態和憑證。
   + 如果可能，測試來自不同網路的存取。

### DNS 解析
<a name="web-crawler-dns-resolution"></a>

Web 爬蟲程式使用 DNS 將網站主機名稱 （例如 `www.example.com`) 解析為 IP 地址。根據預設，它會使用公有 DNS 解析。

在 VPC 內爬取網站時，您可能需要設定私有 DNS 伺服器，以便爬蟲程式可以解析內部網站的主機名稱。根據您的 VPC 組態選擇下列其中一個選項：

1. **使用 VPC 提供的 DNS 伺服器** — 如果您的 VPC 同時啟用 **DNS 主機名稱**和 **DNS 解析**，您可以使用預設 VPC DNS 解析程式 （通常是 10.0.0.2，或更普遍的 VPC CIDR base\$12)。如需詳細資訊，請參閱[VPC](vpc-amazon-virtual-private-cloud.md)。

1. **使用自訂 DNS 伺服器** — 如果您的 VPC 使用自訂 DNS 解析程式，請提供組織內部 DNS 伺服器的 IP 地址。與您的網路管理員合作以取得此地址。

如果您未設定 DNS 伺服器，爬蟲程式只會解析公開註冊的主機名稱。

### JavaScript 相依導覽
<a name="web-crawler-javascript-navigation"></a>

**徵狀：**
+ 只有種子 URL 才會編製索引，未發現其他頁面
+ 爬蟲成功完成，但只傳回一個文件

**解決步驟：**

1. Web 爬蟲程式會執行 JavaScript 並轉譯頁面內容，但不會模擬使用者互動，例如點選、捲動或暫留動作。如果您的網站透過使用者互動載入導覽連結 （例如，按一下處理常式、無限捲動或動態功能表），爬蟲程式就無法探索這些連結。

1. 在瀏覽器開發人員工具中檢查您的頁面，以檢查導覽連結是否使用標準`<a href="...">`元素。如果連結是透過 JavaScript 事件處理常式進行路由，爬蟲程式將不會跟隨它們。

1. 如果您的網站提供網站地圖，Web 爬蟲程式會自動檢查種子 URLs 上的常見網站地圖路徑。確保您的網站地圖可在標準位置 （例如 `/sitemap.xml`) 使用，以便爬蟲程式可以在不依賴頁面內連結擷取的情況下探索其他 URLs。

1. 或者，直接提供所有目標頁面 URLs做為種子 URLs。

1. 如果內容可以匯出為 HTML、PDF 或文字檔案，請考慮改用 Amazon S3 連接器做為資料來源。

### 爬蟲和內容問題
<a name="web-crawler-crawl-issues"></a>

**徵狀：**
+ 遺失或不完整的內容
+ 未完成爬蟲或提早終止
+ 速率限制錯誤 (429 個回應）
+ 內容未正確編製索引

**解決步驟：**

1. 檢閱 robots.txt 限制：
   + 檢查 robots.txt 檔案是否有爬蟲限制。
   + 驗證爬蟲程式是否允許存取目標路徑。
   + 確保 robots.txt 合規不會封鎖內容。

1. 檢查速率限制和限流：
   + 監控回應標頭以取得速率限制資訊。
   + 實作適當的爬蟲延遲。

1. 驗證 URL 模式和篩選條件：
   + 測試 regex 模式的準確性。
   + 檢查 URL 格式和結構。
   + 驗證包含/排除模式邏輯。

1. 檢閱內容限制：
   + 檢查頁面上的 noindex 中繼標籤。
   + 驗證內容類型支援。
   + 確保內容大小在限制範圍內。

1. 更新等待時間，讓內容在爬蟲程式開始爬蟲之前載入頁面。

### 已知限制
<a name="web-crawler-integration-limitations"></a>

Web 爬蟲程式整合有下列限制：
+ **URL 限制：**每個資料集最多 10 URLs。您無法在種子 URLs欄位中提供網站地圖 URL。
+ **爬蟲深度：**爬蟲深度上限為 10 個層級
+ **安全需求：**Web 代理組態所需的 HTTPS

搭配 VPC 連線使用 Web 爬蟲程式時，適用下列限制：
+ **不支援 HTTP/3 (QUIC)：**不支援 HTTP/3。大多數網站會自動回到 HTTP/2，但只能存取針對 HTTP/3 設定的網站。
+ **需要透過 TCP 的 DNS：**DNS 解析必須使用 TCP。在設定 VPC 爬取之前，請確認您的 DNS 伺服器支援透過 TCP 的 DNS。
+ **需要公有信任的 SSL 憑證：**內部網站必須使用來自知名憑證授權單位的憑證 （例如 Let's Encrypt 或 DigiCert)。使用自我簽署或私有 CA 憑證的站台將無法連線。
+ **僅限 IPv4：**僅支援 IPv4 地址。無法抓取只能透過 IPv6 存取的網站。