

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

# 网络爬虫集成
<a name="web-crawler-integration"></a>

借助 Amazon Quick 中的 Web Crawler 集成，您可以通过抓取和索引网页来根据网站内容创建知识库。此集成支持具有不同身份验证选项的数据摄取功能。

## 网络爬虫功能
<a name="web-crawler-integration-capabilities"></a>

Web Crawler 用户可以询问有关存储在网站和网页上的内容的问题。例如，用户可以在多个网页上搜索文档站点、知识库或特定信息。

该集成可帮助用户访问和理解 Web 内容，无论其位置或类型如何。它提供上下文详细信息，例如发布日期、修改历史记录和页面所有权，以便更有效地发现信息。

**注意**  
Web Crawler 集成仅支持数据摄取。它不提供用于管理网站或 Web 服务的操作功能。

## 先决条件
<a name="web-crawler-integration-prerequisites"></a>

在设置 Web Crawler 集成之前，请确保具备以下条件：
+  URLs 要抓取和索引的网站。
+ Amazon Quick 企业版订阅。
+ 不在防火墙后面、不需要特殊浏览器插件即可连接的网站。

## 准备网站访问和身份验证
<a name="web-crawler-integration-authentication"></a>

在 Amazon Quick 中设置集成之前，请准备好您的网站访问凭证。Web Crawler 集成支持不同的身份验证方法：

**不使用身份验证**  
用于抓取不需要身份验证的网站。

**基本身份验证**   
适用于安全网站的标准 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）进行身份验证，而不是直接在每个应用程序中输入凭据。身份提供者将安全令牌传回应用程序以授予访问权限。  
**必填信息：**  
+ **登录页面网址**-SAML 登录页面的网址
+ **用户名**-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 Crawler 集成
<a name="web-crawler-integration-setup"></a>

准备好网站访问要求后，在 Amazon Quick 中创建 Web Crawler 集成。

1. 在 Amazon Quick 控制台中，选择**集成。**

1. 从集成选项中选择 **Web Crawler**，然后单击 “**添加**” 按钮（加上 “\$1” 按钮）。

1. 选择 “**从 Web Crawler 访问数据**”。Web Crawler 集成仅支持数据访问——动作执行不适用于网络抓取。

1. 配置集成详细信息和身份验证方法，然后根据需要创建知识库。

   1. 为您的网络爬虫集成选择身份验证类型。

   1. 根据您选择的身份验证方法输入所需的详细信息。

   1. （可选）选择 VPC 连接来抓取您的私有网络中托管的网站。必须先在管理员设置中配置 VPC 连接，然后才能在此处进行选择。有关更多信息，请参阅 [设置 VPC 以与 Amazon Quick 配合使用](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
```

**限制：** URLs 每个数据集最多 10 个

### 内容过滤器和抓取设置
<a name="web-crawler-content-filters"></a>

#### 抓取范围设置
<a name="web-crawler-crawl-scope-settings"></a>

 要查看这些设置，必须先设置知识库，然后检查高级设置选项。

**爬行深度**  
+ 范围：0-10（默认值：1）
+ 0 = 仅指定抓取 URLs
+ 1 = 包含深度为一层的链接页面
+ 值越高，链接会更深入地进入网站

**每页的最大链接数**  
+ 默认值：1000
+ 最大值：1000
+ 控制每个页面上要关注的链接数量

**等待**时间  
+ 默认：1
+ 网页进入就绪状态后，网络爬虫等待每个页面的时间（以秒为单位）。对于包含在主模板之后加载的动态 JavaScript 内容的页面，请增加此值。

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

设置 Web Crawler 集成后，您可以根据抓取的网站内容创建和管理知识库。

### 编辑现有知识库
<a name="web-crawler-edit-knowledge-base"></a>

您可以修改现有的 Web Crawler 知识库：

1. 在 Amazon Quick 控制台中，选择**知识库**。

1. 从列表中选择您的 Web Crawler 知识库。

1. 选择 “**操作**” 下的三点图标，然后选择 “**编辑知识库**”。

1. 根据需要更新您的配置设置，然后选择 “**保存**”。

### 附件和文件搜寻
<a name="web-crawler-attachments"></a>

控制系统是否处理从网页链接的文件和附件：
+ **启用文件附件抓取**-选择此选项可对网页上的文件和附件（例如 PDFs文档和媒体文件）进行爬网和索引。

### 抓取行为和同步配置
<a name="web-crawler-crawling-behavior"></a>

您的 Web Crawler 集成遵循以下抓取方法：
+ **增量同步模型：**第一次同步执行完全抓取。后续同步仅捕获更改。
+ **自动重试：**针对失败请求的内置重试逻辑。
+ **重复处理：**自动检测和删除重复数据。 URLs
+ **爬虫识别：**在请求标头中使用用户代理字符串 “aws-quick-on-behalf-of-<UUID>” 来标识自己。

#### 网站地图发现
<a name="web-crawler-sitemap-discovery"></a>

Web Crawler 通过在种子中追加常用站点地图路径来自动检查站点地图。 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 Crawler 不遵循递归站点地图索引引用。仅使用已发现的站点地图中直接 URLs 列出的内容。robots.txt 中的站点地图指令不用于网站地图发现。

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

Web Crawler 尊重 robots.txt 协议并尊重用户代理和指令。 allow/disallow 这使您能够控制抓取工具访问您的网站的方式。

##### robots.txt 检查的工作原理
<a name="web-crawler-robots-behavior"></a>
+ **主机级检查：Web Crawler 在主机级别**读取 robots.txt 文件（例如，example.com/robots.txt）
+ **多主机支持：**对于具有多个主机的域名，Web Crawler 会分别遵守每个主机的机器人规则
+ **后备行为：**如果 Web Crawler 由于阻塞、解析错误或超时而无法获取 robots.txt，则其行为就像 robots.txt 不存在一样。在这种情况下，爬虫会继续抓取该网站。

##### 支持的 robots.txt 字段
<a name="web-crawler-robots-fields"></a>

Web Crawler 可以识别以下 robots.txt 字段（字段名称不区分大小写，值区分大小写）：

`user-agent`  
标识规则适用于哪个 Crawler。

`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 Crawler 可能会使用页面上的链接来发现这些链接的页面。

您可以使用逗号组合多个值（例如，“noindex，nofollow”）。

**注意**  
要检测元标记，Web Crawler 必须访问您的页面。不要使用 robots.txt 屏蔽您的页面，因为这样可以防止页面被重新抓取。

## 问题排查
<a name="web-crawler-integration-troubleshooting"></a>

使用本节来解决 Web Crawler 集成的常见问题。

### 身份验证失败次数
<a name="web-crawler-authentication-failures"></a>

**症状：**
+ “无法验证” 错误消息
+ 401/403 HTTP 响应
+ 登录页面重定向循环
+ 会话超时错误

**解决步骤：**

1. 确认可以从设置 Amazon Quick 实例的 Amazon 区域访问该站点。

1. 验证您的凭证是否正确且未过期。

1. 检查身份验证端点的可用性和可访问性。

1. 通过在浏览器开发者工具中测试 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 Crawler 使用 DNS 将网站主机名（例如`www.example.com`）解析为 IP 地址。默认情况下，它使用公有 DNS 解析。

在 VPC 内抓取网站时，您可能需要配置私有 DNS 服务器，以便爬网程序可以解析内部站点的主机名。根据您的 VPC 配置选择以下选项之一：

1. **使用 VPC 提供的 DNS 服务器** — 如果您的 VPC 同时启用了 D **NS 主机名和 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>

**症状：**
+ 仅为种子网址编制索引，未发现其他页面
+ Crawl 成功完成但只返回一个文档

**解决步骤：**

1. Web Crawler 执行 JavaScript 和呈现页面内容，但不模拟用户交互，例如点击、滚动或悬停操作。如果您的网站通过用户交互（例如，点击处理程序、无限滚动或动态菜单）加载导航链接，则抓取工具无法发现这些链接。

1. 在浏览器开发者工具中检查您的页面，检查导航链接是否使用标准`<a href="...">`元素。如果链接改为通过 JavaScript 事件处理程序进行连接，则爬虫将不会跟踪它们。

1. 如果您的网站提供了站点地图，Web Crawler 会自动检查您的种子 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 模式和过滤器：
   + 测试正则表达式模式的准确性。
   + 检查 URL 格式和结构。
   + 验证 include/exclude 模式逻辑。

1. 查看内容限制：
   + 检查页面上是否有 noindex 元标记。
   + 验证内容类型支持。
   + 确保内容大小在限制范围内。

1. 更新等待时间，以便在抓取工具开始抓取之前将内容加载到页面上。

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

Web Crawler 集成有以下限制：
+ **网址限制：** URLs 每个数据集最多 10 个种子。您不能在种子网址字段 URLs 中提供站点地图。
+ **爬行深度：**最大爬行深度为 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 无法抓取只能通过以下方式访问的网站。