

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 网络爬虫
<a name="kb-managed-ds-webcrawler"></a>

Web Crawler 会连接并抓取您指定的 URL，以便在托管知识库中使用。Web Crawler 会从您的种子网址开始遍历 HTML 页面，并根据您的抓取范围和限制跟踪子链接。您也可以提供站点地图 URL 作为起点。网络爬虫根据 [ RFC 9309 尊重 robots.txt。](https://www.rfc-editor.org/rfc/rfc9309.html)

**重要**  
当您选择要抓取的网站时，必须遵守《[亚马逊可接受使用政策》](https://aws.amazon.com/aup/)和所有其他亚马逊条款。仅使用 Web Crawler 索引您自己的网页或您有权抓取的网页。

**注意**  
网络爬虫不支持文档级访问控制 (ACL)。任何有权访问知识库的用户都可以访问所有索引内容。如果您需要 ACL 筛选，请使用支持该筛选的连接器（例如，Amazon S3 或 OneDrive）。 SharePoint

## 支持的功能
<a name="kb-managed-supported-features-webcrawler"></a>
+ 抓取多个种子网址和站点地图网址
+ 可配置的抓取深度、速率限制和每个 URL 的链接限制
+ 抓取范围控制：相同的主机和路径、仅限主机或主机和子域
+ URL 模式过滤器（包含和排除正则表达式）
+ 抓取从网页（PDF、文档等）链接的附件
+ 受保护站点的身份验证：基本、基于表单或 SAML
+ 对添加、更新和删除的内容进行增量内容同步

## 身份验证方法
<a name="kb-managed-webcrawler-auth-methods"></a>

Web Crawler 支持四种身份验证方法。选择与目标站点对用户进行身份验证的方式相匹配的方法。对于未登录的公共站点，请使用`NO_AUTH`。


**Web Crawler 身份验证方法**  

| 方法 | 它是如何进行身份验证的 | 何时使用 | 
| --- | --- | --- | 
| 没有身份验证 (NO\_AUTH) | 爬虫发送没有凭据的请求。 | 不需要登录的公共网站。 | 
| 基本身份验证 (BASIC\_AUTH) | 爬虫会发送一个 HTTP Authorization: Basic 标头，其中包含您的密钥中的用户名和密码。 | 受 HTTP 基本身份验证（浏览器风格的用户名和密码对话框）保护的站点。 | 
| 表单身份验证 (FORM) | 爬虫通过提交 HTML 表单登录。您提供登录 URL、凭据和用于定位表单字段的 XPath 表达式。 | 使用 HTML 表单登录的站点。 | 
| SAML 身份验证 () SAML | 爬虫通过 SAML 身份提供商的登录表单登录。您提供 IdP 登录 URL、凭据和用于定位表单字段的 XPath 表达式。 | 使用 SAML-based 单点登录的站点。 | 

## 先决条件
<a name="kb-managed-prereqs-webcrawler"></a>

**对于要抓取的网站，请**确保：
+ 有权抓取网站及其内容。
+ 确认该`robots.txt`网站不禁止您要抓取的网址。如果找不到`robots.txt`文件，Web Crawler 默认为不允许。
+ 如果网站需要登录，请确定身份验证方法（基本、表单或 SAML）。对于表单和 SAML，在登录页面上找到用户名字段、密码字段和提交按钮的 XPath 表达式。要查找 XPath，请在浏览器中打开表单元素的上下文（右键单击）菜单并选择 “**检查”**，然后从开发者工具中复制 XPath。

**在您的 AWS 账户中，请确保**：
+ 如果您的网站需要身份验证，请将您的证书存储在[AWS Secrets Manager 密钥中](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)并记下其亚马逊资源名称 (ARN)。有关确切的键值对，请参见。[身份验证凭证](#kb-managed-webcrawler-credentials)
+ 在知识库的 AWS Identity and Access Management (IAM) role/permissions 政策中包括连接到数据源的必要权限。有关所需权限的信息，请参阅[访问数据来源的权限](kb-permissions.md#kb-permissions-access-ds)。

## 如何设置 Web Crawler 数据源
<a name="kb-managed-webcrawler-workflow"></a>

设置 Web Crawler 数据源涉及以下步骤：

1. **（如果您的网站需要登录）准备证书。**将您的身份验证方法的凭据存储在 AWS Secrets Manager 密钥中。请参阅[身份验证凭证](#kb-managed-webcrawler-credentials)。

1. **连接数据源。**使用 AWS 管理控制台 或 API 在知识库中创建 Web Crawler 数据源。请参阅[创建数据源](#kb-managed-ds-webcrawler-create)。

## 创建数据源
<a name="kb-managed-ds-webcrawler-create"></a>

------
#### [ Console ]

**将 Web Crawler 连接到您的托管知识库**

1. 在 “**数据源” 下**，为您的数据源提供一个名称。

1. **从数据源下拉列表中选择 ** Web Crawler。

1. 在 “**来源” 下**，选择**来源网址**（最多 10 个起点网址）或**来源站点地图**（最多 3 个站点地图网址）。

1. 在**添加网址**文本区域中输入您的网址，每行一个。

1. 在 “**身份验证” 下**，选择 “**无身份验证” **、“**基本身份验证” **、“**表单身份验证**” 或 “**SAML 身份验证**”。对于除**无身份验证以外的任何方法**，请选择或创建 AWS Secrets Manager 密钥来存储您的证书。

1. （可选）扩展**同步范围**以设置抓取深度（0—10）、每个 URL 的最大链接数（1—1000）、每分钟抓取的最大网址（1—300）和抓取范围：**默认**（与种子 URL 相同的主机和相同的初始 URL 路径）、仅限**主机（相同的主机、任何路径）或**子域名 ****（相同的主域，包括子域名）。

1. （可选）扩展 ** URL 过滤器模式**以添加包含或排除特定 URL 的正则表达式。

------
#### [ API ]

要创建网络爬虫数据源，请使用适用于亚马逊 Bedrock 构建时终端节点的代理发送[CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)请求。以下 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/.*}}"
                ]
            }
        }
    }
}
```

对于经过身份验证的站点`BASIC_AUTH`，`authType`将设置为`FORM``SAML`、或，然后添加`secretArn`到`connectionConfiguration`。

对于托管知识库，`CreateDataSource`是异步的：操作完成后，数据源状态从过渡`CREATING`到`AVAILABLE`。

------

## 连接器参数
<a name="kb-managed-config-webcrawler"></a>

数据源配置使用以下连接器参数。要使用 Web 爬虫，请在中指定`WEB`为连接器类型。`connectorParameters`有关换行字段`connectorParameters`（例如`deletionProtectionConfiguration`和`mediaExtractionConfiguration`），请参阅[连接数据来源](kb-managed-connect-ds.md)。


**connectionConfiguration**  

| 字段 | 必填 | 说明 | 
| --- | --- | --- | 
| seedUrls | 有条件 | 开始抓取的种子网址列表。最大 10。除非您提供，否则为必填项siteMapUrls。 | 
| siteMapUrls | 有条件 | 站点地图网址列表。最多 3 个。除非您提供，否则为必填项seedUrls。 | 
| authType | 是 | 身份验证类型：NO\_AUTHBASIC\_AUTH、FORM、或SAML。请参阅[身份验证方法](#kb-managed-webcrawler-auth-methods)。 | 
| secretArn | 有条件 | 包含您的证书的 AWS Secrets Manager 密钥的 ARN。如果不authType是，则为必填项NO\_AUTH。 | 


**爬网配置（可选）**  

| 字段 | 必填 | 说明 | 
| --- | --- | --- | 
| crawlDepth | 否 | 最大爬行深度。范围 0—10。0仅抓取指定的 URL；较高的值会跟踪链接更深入的网站。默认值为 2。 | 
| maxLinksPerUrl | 否 | 每个 URL 可关注的最大链接数。范围为 1—1000。默认值为 100。 | 
| maxCrawledUrlsPerMinute | 否 | 每分钟抓取的最大网址（速率限制）。范围为 1—300。 | 
| implicitWaitInSeconds | 否 | 在页面进入就绪状态后，爬虫读取之前的等待时间（以秒为单位）。对于包含在主模板之后加载的动态 JavaScript 内容的页面，请增加此值。 | 
| syncScope | 否 | 要关注的链接范围。PATH\_SPECIFIC（与种子 URL 相同的主机和相同的初始 URL 路径）、DOMAINS\_ONLY（任何路径与种子 URL 相同的主机）或SUB\_DOMAINS（相同的主域，包括子域名）之一。省略时，爬虫只会抓取与种子 URL 相同的主机和相同的初始 URL 路径。 | 
| crawlAttachments | 否 | 是否抓取从网页链接的文件和附件（例如 PDF 和其他文档）。 | 


**过滤器配置（可选）**  

| 字段 | 必填 | 说明 | 
| --- | --- | --- | 
| inclusionPatterns | 否 | 正则表达式列表。只有符合至少一种模式的网址才会被抓取和编入索引。 | 
| exclusionPatterns | 否 | 正则表达式列表。匹配任何模式的网址都不会被抓取或编入索引。 | 
| maxFileSizeInMegaBytes | 否 | 爬虫采集的任何单个文件的最大大小（以兆字节为单位）。以数字字符串形式提供（例如，"500"）。默认值为 "500"。 | 

## 身份验证凭证
<a name="kb-managed-webcrawler-credentials"></a>

如果您的网站需要身份验证，请将您的凭据存储在 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**”。

## 问题排查
<a name="kb-managed-ds-webcrawler-troubleshooting"></a>


**常见的 Web Crawler 问题、原因和修复方法**  

| 症状 | 可能原因 | Fix | 
| --- | --- | --- | 
| 同步成功完成，但只有种子 URL 被编入索引。 | 网站导航链接是通过 JavaScript 事件处理程序（点击、滚动、动态菜单）而不是标准<a href="...">元素连接的。爬虫会渲染 JavaScript 但不模拟用户交互，因此它无法发现这些链接。 | 为要抓取的页面提供额外的种子网址，或提供一个列出所有要抓取的网址的站点地图网址。如果内容可以导出为文件，请考虑改用 Amazon S3 连接器。 | 
| 同步不返回任何内容或页面少于预期。 | 该网站的robots.txt文件禁止您想要抓取的网址，或者页面带有noindex元标记。 | 更新robots.txt主机，使其允许您抓取想要的路径，或者从要编入索引的页面中移除noindex元标记。robots.txt如果您还想检测元标记，请不要屏蔽该页面，因为爬虫必须访问该页面才能读取元标记。 | 
| 身份验证失败（HTTP 401 或 403、登录重定向循环或会话超时）。 | 凭据不正确或已过期，或者 XPath 表达式与登录页面元素不匹配。 | 验证您的密钥中的证书。要FORM进行SAML身份验证，请在浏览器的开发者工具中验证每个 XPath，然后进行验证。loginPageUrl | 
| 由于速率限制 (HTTP 429) 或内容不完整，同步失败。 | 爬虫获取页面的速度超出了网站允许的速度。 | implicitWaitInSeconds对于包含在页面准备就绪后加载的动态内容的站点，降低maxCrawledUrlsPerMinute或增加。 | 
| 由于页面大于预期，因此缺少页面。 | 页面或附件超过maxFileSizeInMegaBytes。 | 增加maxFileSizeInMegaBytes或接受不摄取大于限制的文件。 | 