View a markdown version of this page

网络爬虫 - Amazon Bedrock

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

网络爬虫

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

重要

当您选择要抓取的网站时,必须遵守《亚马逊可接受使用政策》和所有其他亚马逊条款。仅使用 Web Crawler 索引您自己的网页或您有权抓取的网页。

注意

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

支持的功能

  • 抓取多个种子网址和站点地图网址

  • 可配置的抓取深度、速率限制和每个 URL 的链接限制

  • 抓取范围控制:相同的主机和路径、仅限主机或主机和子域

  • URL 模式过滤器(包含和排除正则表达式)

  • 抓取从网页(PDF、文档等)链接的附件

  • 受保护站点的身份验证:基本、基于表单或 SAML

  • 对添加、更新和删除的内容进行增量内容同步

身份验证方法

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 单点登录的站点。

先决条件

对于要抓取的网站,请确保:

  • 有权抓取网站及其内容。

  • 确认该robots.txt网站不禁止您要抓取的网址。如果找不到robots.txt文件,Web Crawler 默认为不允许。

  • 如果网站需要登录,请确定身份验证方法(基本、表单或 SAML)。对于表单和 SAML,在登录页面上找到用户名字段、密码字段和提交按钮的 XPath 表达式。要查找 XPath,请在浏览器中打开表单元素的上下文(右键单击)菜单并选择 “检查”,然后从开发者工具中复制 XPath。

在您的 AWS 账户中,请确保

  • 如果您的网站需要身份验证,请将您的证书存储在AWS Secrets Manager 密钥中并记下其亚马逊资源名称 (ARN)。有关确切的键值对,请参见。身份验证凭证

  • 在知识库的 AWS Identity and Access Management (IAM) role/permissions 政策中包括连接到数据源的必要权限。有关所需权限的信息,请参阅访问数据来源的权限

如何设置 Web Crawler 数据源

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

  1. (如果您的网站需要登录)准备证书。将您的身份验证方法的凭据存储在 AWS Secrets Manager 密钥中。请参阅身份验证凭证

  2. 连接数据源。使用 AWS 管理控制台 或 API 在知识库中创建 Web Crawler 数据源。请参阅创建数据源

创建数据源

Console
将 Web Crawler 连接到您的托管知识库
  1. 在 “数据源” 下,为您的数据源提供一个名称。

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

  3. 在 “来源” 下,选择来源网址(最多 10 个起点网址)或来源站点地图(最多 3 个站点地图网址)。

  4. 添加网址文本区域中输入您的网址,每行一个。

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

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

  7. (可选)扩展 URL 过滤器模式以添加包含或排除特定 URL 的正则表达式。

API

要创建网络爬虫数据源,请使用适用于亚马逊 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/.*" ] } } } }

对于经过身份验证的站点BASIC_AUTHauthType将设置为FORMSAML、或,然后添加secretArnconnectionConfiguration

对于托管知识库,CreateDataSource是异步的:操作完成后,数据源状态从过渡CREATINGAVAILABLE

连接器参数

数据源配置使用以下连接器参数。要使用 Web 爬虫,请在中指定WEB为连接器类型。connectorParameters有关换行字段connectorParameters(例如deletionProtectionConfigurationmediaExtractionConfiguration),请参阅连接数据来源

connectionConfiguration
字段 必填 说明
seedUrls 有条件 开始抓取的种子网址列表。最大 10。除非您提供,否则为必填项siteMapUrls
siteMapUrls 有条件 站点地图网址列表。最多 3 个。除非您提供,否则为必填项seedUrls
authType 身份验证类型:NO_AUTHBASIC_AUTHFORM、或SAML。请参阅身份验证方法
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"

身份验证凭证

如果您的网站需要身份验证,请将您的凭据存储在 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 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或接受不摄取大于限制的文件。