View a markdown version of this page

Web 編目程式 - Amazon Bedrock

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

Web 編目程式

Web 爬蟲程式會連線至您指定的 URLs並編目,以便在受管知識庫中使用。Web 爬蟲程式會從種子 URLs 開始周遊 HTML 頁面,並根據您的爬蟲範圍和限制遵循子連結。您也可以提供網站地圖 URLs做為起點。Web Crawler 遵守符合 RFC 9309 的 robots.txt。

重要

當您選取要爬取的網站時,您必須遵守 Amazon 可接受的使用政策和所有其他 Amazon 術語。僅使用 Web 爬蟲程式來為您自己的網頁或您有權進行爬蟲的網頁編製索引。

注意

Web 爬蟲程式不支援文件層級存取控制 (ACLs)。可存取知識庫的任何使用者皆可存取所有索引內容。如果您需要 ACL 篩選,請使用支援它的連接器 (例如 Amazon S3、SharePoint 或 OneDrive)。

支援的功能

  • 編目多個種子 URLs和網站地圖 URLs

  • 可設定的爬蟲深度、速率限制和links-per-URL限制

  • 爬蟲範圍控制:相同的主機和路徑、僅限主機,或主機和子網域

  • URL 模式篩選條件 (包含和排除規則表達式)

  • 從網頁連結的編目附件 PDFs、文件等)

  • 受保護網站的身分驗證:基本、表單型或 SAML

  • 新增、更新和刪除內容的增量內容同步

身分驗證方法

Web 爬蟲程式支援四種身分驗證方法。選擇符合目標網站對使用者進行身分驗證的方法。對於沒有登入的公有網站,請使用 NO_AUTH

Web 爬蟲程式身分驗證方法
Method 其驗證方式 使用情況
無身分驗證 (NO_AUTH) 爬蟲程式在沒有登入資料的情況下傳送請求。 不需要登入的公有網站。
基本身分驗證 (BASIC_AUTH) 爬蟲程式會從秘密傳送包含使用者名稱和密碼的 HTTP Authorization: Basic標頭。 受 HTTP 基本身分驗證保護的網站 (瀏覽器型使用者名稱和密碼對話方塊)。
表單身分驗證 (FORM) 爬蟲程式透過提交 HTML 表單登入。您可以提供登入 URL、登入資料和 XPath 運算式來尋找表單欄位。 使用 HTML 表單登入的站台。
SAML 身分驗證 (SAML) 爬蟲程式會透過 SAML 身分提供者的登入表單登入。您可以提供 IdP 登入 URL、登入資料和 XPath 運算式來尋找表單欄位。 使用 SAML 型單一登入的站台。

先決條件

對於您要抓取的網站,請確定您

  • 具有抓取網站及其內容的許可。

  • 確認 robots.txt 網站不允許您要抓取URLs。如果找不到robots.txt檔案,Web 爬蟲程式預設為不允許 。

  • 如果網站需要登入,請識別身分驗證方法 (基本、表單或 SAML)。對於表單和 SAML,找到登入頁面上使用者名稱欄位、密碼欄位的 XPath 表達式,然後提交按鈕。若要尋找 XPath,請在瀏覽器中開啟表單元素的內容 (按一下滑鼠右鍵) 選單,然後選擇檢查,然後從開發人員工具複製 XPath。

在您的帳戶中 AWS ,請確定您

  • 如果您的網站需要身分驗證,請將您的登入資料存放在AWS Secrets Manager 秘密中,並記下其 Amazon Resource Name (ARN)。如需確切的鍵/值對,請參閱 驗證憑證

  • 在知識庫的 AWS Identity and Access Management (IAM) 角色/許可政策中包含連接到資料來源的必要許可。如需必要許可的資訊,請參閱 存取您的資料來源的許可

如何設定 Web 爬蟲程式資料來源

設定 Web 爬蟲程式資料來源包含下列步驟:

  1. (如果您的網站需要登入) 準備登入資料。將身分驗證方法的登入資料存放在 AWS Secrets Manager 秘密中。請參閱 驗證憑證

  2. 連接資料來源。使用 AWS 管理主控台 或 API 在知識庫中建立 Web 爬蟲程式資料來源。請參閱 建立資料來源

建立資料來源

Console
將 Web 爬蟲程式連接至您的受管知識庫
  1. 資料來源下,提供資料來源的名稱。

  2. 從資料來源下拉式清單中選取 Web 爬蟲程式

  3. 來源下,選擇來源 URLs(最多 10 URLs) 或來源網站地圖 (最多 3 個網站地圖 URLs)。

  4. 在新增 URLs文字區域中輸入您的 URL,每行一個。 URLs

  5. 身分驗證下,選取無身分驗證基本身分驗證表單身分驗證SAML 身分驗證。對於無身分驗證以外的任何方法,請選取或建立 AWS Secrets Manager 秘密來存放您的登入資料。

  6. (選用) 展開同步範圍以設定網路爬取深度 (0–10)、每個 URL 的連結上限 (1–1000)、每分鐘網路爬取URLs 上限 (1–300),以及網路爬取範圍:預設 (與種子 URL 相同的主機和相同的初始 URL 路徑)、僅限主機 (相同的主機、任何路徑) 或子網域 (包括子網域)。

  7. (選用) 展開 URL 篩選模式,以新增包含或排除特定 URLs規則運算式。

API

若要建立 Web Crawler 資料來源,請使用 Amazon Bedrock 建置時間端點的代理程式傳送 CreateDataSource 請求。下列 AWS Command Line Interface 範例會建立資料來源,在沒有身分驗證的情況下爬取公有網站。如需每個欄位的說明,請參閱以下連接器參數參考。

aws bedrock-agent create-data-source \ --name "WebCrawler-connector" \ --knowledge-base-id "your-knowledge-base-id" \ --data-source-configuration file://webcrawler-managed-connector.json

webcrawler-managed-connector.json 檔案包含下列項目:

{ "type": "MANAGED_KNOWLEDGE_BASE_CONNECTOR", "managedKnowledgeBaseConnectorConfiguration": { "connectorParameters": { "type": "WEB", "version": "1", "connectionConfiguration": { "seedUrls": [ "https://docs.example.com" ], "authType": "NO_AUTH" }, "crawlConfiguration": { "crawlDepth": 3, "maxLinksPerUrl": 100, "maxCrawledUrlsPerMinute": 50, "syncScope": "SUB_DOMAINS", "crawlAttachments": true }, "filterConfiguration": { "exclusionPatterns": [ "https://docs.example.com/private/.*" ] } } } }

對於已驗證的網站,請將 authType設定為 BASIC_AUTHFORMSAML,並將 新增至 secretArn connectionConfiguration

對於受管知識庫, CreateDataSource是非同步的:當操作完成CREATINGAVAILABLE時,資料來源狀態會從 轉換為 。

連接器參數

資料來源組態使用下列連接器參數。若要使用 Web 爬蟲程式,請在 中指定 WEB做為連接器類型connectorParameters。如需包裝的欄位 connectorParameters(例如 deletionProtectionConfigurationmediaExtractionConfiguration),請參閱 連接資料來源

connectionConfiguration
欄位 必要 說明
seedUrls 有條件 要開始爬取的種子 URLs清單。上限為 10。除非您提供 ,否則為必要項目siteMapUrls
siteMapUrls 有條件 網站地圖 URLs的清單。最多 3 個。除非您提供 ,否則為必要項目seedUrls
authType 身分驗證類型:NO_AUTHFORMBASIC_AUTHSAML。請參閱 身分驗證方法
secretArn 有條件 包含您登入資料的 AWS Secrets Manager 秘密 ARN。當 authType 不是 時為必要NO_AUTH
crawlConfiguration (選用)
欄位 必要 說明
crawlDepth 爬蟲深度上限。範圍 0–10。 0 僅編目指定的 URLs;較高的值遵循更深入網站的連結。預設為 2
maxLinksPerUrl 每個 URL 要遵循的最大連結數。範圍 1–1000。預設為 100
maxCrawledUrlsPerMinute 每分鐘爬取的 URLs 上限 (速率限制)。範圍 1–300。
implicitWaitInSeconds 在爬蟲程式讀取頁面之前,頁面到達就緒狀態後的等待時間,以秒為單位。對於在主要範本之後載入的動態 JavaScript 內容頁面,請增加此值。
syncScope 要遵循的連結範圍。其中一個 PATH_SPECIFIC(與種子 URL 相同的主機和相同的初始 URL 路徑)、 DOMAINS_ONLY (與種子 URL 相同的主機、任何路徑) 或 SUB_DOMAINS(與主要網域相同,包括子網域)。省略時,爬蟲程式只會爬取與種子 URL 相同的主機和相同的初始 URL 路徑。
crawlAttachments 是否從網頁編目連結的檔案和附件 (例如 PDFs和其他文件)。
filterConfiguration (選用)
欄位 必要 說明
inclusionPatterns 規則表達式的清單。只有符合至少一個模式URLs 才會編目和編製索引。
exclusionPatterns 規則表達式的清單。符合任何模式URLs 不會編目或編製索引。
maxFileSizeInMegaBytes 爬蟲程式擷取之任何單一檔案的大小上限,以 MB 為單位。提供 做為數值字串 (例如,"500")。預設為 "500"

驗證憑證

如果您的網站需要身分驗證,請將您的登入資料存放在秘密 AWS Secrets Manager 中。秘密格式取決於您選擇的身分驗證類型。

基本身分驗證 (BASIC_AUTH)

{ "userName": "your-username", "password": "your-password", "authentication": "BASIC_AUTH" }

表單身分驗證 (FORM)

對於以表單為基礎的身分驗證,請提供 XPath 表達式,以識別登入頁面上的使用者名稱欄位、密碼欄位和提交按鈕。

{ "authentication": "FORM", "loginPageUrl": "https://example.com/login", "userName": "your-username", "password": "your-password", "userNameFieldXpath": "//input[@name='username']", "passwordFieldXpath": "//input[@name='password']", "userNameButtonXpath": "//button[@type='submit']", "passwordButtonXpath": "//button[@type='submit']" }

SAML 身分驗證 (SAML)

針對 SAML 身分驗證,請為表單欄位提供 SAML 身分提供者的登入頁面 URL 和 XPath 運算式。

{ "authentication": "SAML", "loginPageUrl": "https://your-idp.example.com/login", "userName": "your-username", "password": "your-password", "userNameFieldXpath": "//input[@name='username']", "passwordFieldXpath": "//input[@name='password']", "userNameButtonXpath": "//button[@type='submit']", "passwordButtonXpath": "//button[@type='submit']" }
注意

若要在瀏覽器中尋找 XPath,請在登入頁面上開啟表單元素的內容 (按一下滑鼠右鍵) 選單,然後選擇檢查。在開發人員工具中,開啟反白 HTML 的內容 (按一下滑鼠右鍵) 選單,然後選擇複製,然後選擇複製 XPath

爬取行為和同步組態

Web 爬蟲程式遵循下列爬蟲實務:

  • 增量同步模型:第一個同步會執行完整網路爬取。後續同步只會擷取新增、更新和刪除的內容。

  • 自動重試:爬蟲程式包含失敗請求的內建重試邏輯。

  • 重複處理:爬蟲程式會自動偵測和刪除重複URLs。

  • 爬蟲程式識別:Web 爬蟲程式會在請求標頭amazon-bedrock-knowledgebase-on-behalf-of-<hash>中使用使用者代理程式字串來識別自己。您可以在 robots.txt 檔案中將此使用者代理程式設為目標,以特別允許或禁止爬蟲程式。如需詳細資訊,請參閱Robots.txt 合規

Robots.txt 合規

Web Crawler 遵守 robots.txt 通訊協定,遵守使用者代理程式,並允許或不允許指令。使用這些指令來控制爬蟲程式存取您網站的方式。

robots.txt 檢查的運作方式

  • 主機層級檢查:Web Crawler 會在主機層級讀取 robots.txt 檔案 (例如,example.com/robots.txt)。

  • 多個主機支援:對於具有多個主機的網域,Web Crawler 會分別遵守每個主機的機器人規則。

  • 備用行為:如果 Web 爬蟲程式因為封鎖、剖析錯誤或逾時而無法擷取 robots.txt,其行為就好像 robots.txt 不存在一樣。在此情況下,Web 爬蟲程式會爬取網站。

支援的 robots.txt 欄位

Web 爬蟲程式會辨識下列 robots.txt 欄位。欄位名稱不區分大小寫;值區分大小寫。

user-agent

識別規則適用的爬蟲程式。

allow

Web 爬蟲程式可以爬取的 URL 路徑。

disallow

Web 爬蟲程式無法抓取的 URL 路徑。

crawl-delay

在網站請求之間等待的時間,以秒為單位。

中繼標籤支援

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

支援的中繼標籤

noindex

請勿為頁面編製索引。如果您未指定此規則,頁面可能會編製索引,並有資格從您的知識庫擷取。

nofollow

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

您可以使用逗號結合多個值 (例如,noindex, nofollow)。

注意

若要偵測中繼標籤,Web 爬蟲程式必須存取您的頁面。請勿封鎖 中的頁面robots.txt,因為這可防止爬蟲程式重新編目頁面以讀取其中繼標籤。

疑難排解

常見的 Web 爬蟲程式問題、原因和修正
徵狀 可能原因 修正
同步已成功完成,但只會編製種子 URL 的索引。 網站導覽連結是透過 JavaScript 事件處理常式 (按一下、捲動、動態功能表) 而非標準<a href="...">元素進行路由。爬蟲程式會轉譯 JavaScript,但不模擬使用者互動,因此無法探索這些連結。 為您要編目的頁面提供額外的種子 URLs,或提供列出每個要編目 URL 的網站地圖 URL。如果內容可以匯出為檔案,請考慮改用 Amazon S3 連接器。
同步不會傳回任何內容或少於預期的頁面。 網站的 robots.txt 檔案不允許您要抓取URLs,或頁面具有noindex中繼標籤。 robots.txt 更新主機,以允許您想要編目的路徑,或從您想要編製索引的頁面中移除noindex中繼標籤。robots.txt 如果您也想要中繼標籤偵測,請勿在 中封鎖頁面,因為爬蟲程式必須存取頁面才能讀取中繼標籤。
身分驗證失敗 (HTTP 401 或 403、登入重新導向迴圈或工作階段逾時)。 登入資料不正確或過期,或 XPath 表達式與登入頁面元素不相符。 驗證秘密中的登入資料。針對 SAML FORM或 驗證,驗證瀏覽器開發人員工具中的每個 XPath,並驗證 loginPageUrl
同步失敗,速率限制 (HTTP 429) 或不完整的內容。 爬蟲程式擷取頁面的速度超過網站允許的速度。 降低 maxCrawledUrlsPerMinute,或在頁面就緒後載入動態內容implicitWaitInSeconds的網站增加 。
頁面因為大於預期而遺失。 頁面或附件超過 maxFileSizeInMegaBytes 增加 maxFileSizeInMegaBytes,或接受未擷取大於限制的檔案。