View a markdown version of this page

网络爬虫 - Amazon Bedrock

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

网络爬虫

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

重要

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

注意

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

支持的功能

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

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

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

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

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

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

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

身份验证方法

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

网络爬虫身份验证方法
方法 它如何进行身份验证 何时使用
不进行身份验证 (NO_AUTH) Crawler 发送没有凭据的请求。 不需要登录的公共网站。
基本身份验证 (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. Connect 数据源。使用 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

要创建 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/.*" ] } } } }

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

对于托管知识库,CreateDataSource这是异步的:操作完成后,数据源状态AVAILABLE会从CREATING变为。

连接器参数

数据源配置使用以下连接器参数。要使用 Web Crawler,请在中指定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 每分钟抓取的最大 URL 数(速率限制)。射程 1—300。
implicitWaitInSeconds 页面进入就绪状态后,爬虫才会读取该页面的等待时间(以秒为单位)。对于在主模板之后加载的动态 JavaScript 内容的页面,请增加此值。
syncScope 要关注的链接范围。PATH_SPECIFIC(与种子 URL 相同的主机和相同的初始 URL 路径)、DOMAINS_ONLY(与种子 URL 相同的主机、任何路径)或SUB_DOMAINS(相同的主域,包括子域名)之一。省略时,抓取工具仅抓取与种子 URL 相同的主机和相同的初始 URL 路径。
crawlAttachments 是否抓取从网页链接的文件和附件(例如 PDF 和其他文档)。
过滤器配置(可选)
字段 必填 说明
inclusionPatterns 正则表达式列表。只有与至少一种模式匹配的网址才会被抓取和索引。
exclusionPatterns 正则表达式列表。匹配任何模式的 URL 都不会被抓取或编入索引。
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”。

问题排查

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