本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
网络爬虫
Web Crawler 会连接并抓取您指定用于托管知识库的 URL。Web Crawler 从您的种子 URL 开始遍历 HTML 页面,并根据您的抓取范围和限制跟踪子链接。您也可以提供站点地图 URL 作为起点。根据 RFC
重要
当您选择要抓取的网站时,必须遵守亚马逊可接受使用政策
注意
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 数据源涉及以下步骤:
创建数据源
连接器参数
数据源配置使用以下连接器参数。要使用 Web Crawler,请在中指定WEB为连接器类型。connectorParameters有关换行字段connectorParameters(例如deletionProtectionConfiguration和mediaExtractionConfiguration),请参阅连接数据来源。
| 字段 | 必填 | 说明 |
|---|---|---|
seedUrls |
有条件 | 开始抓取的种子网址列表。最大 10。除非您提供,否则为必填项siteMapUrls。 |
siteMapUrls |
有条件 | 网站地图网址列表。最多 3 个。除非您提供,否则为必填项seedUrls。 |
authType |
是 | 身份验证类型:NO_AUTHBASIC_AUTH、FORM、或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 表达式与登录页面元素不匹配。 | 验证您的密钥中的凭证。对于FORM或SAML身份验证,请在浏览器的开发者工具中验证每个 XPath,然后进行验证。loginPageUrl |
| 由于速率限制 (HTTP 429) 或内容不完整,同步失败。 | 抓取工具获取页面的速度超过了网站允许的速度。 | implicitWaitInSeconds对于具有动态内容且在页面准备就绪后加载的网站,请降低maxCrawledUrlsPerMinute或增加。 |
| 页面丢失是因为它们比预期的要大。 | 页面或附件超出范围maxFileSizeInMegaBytes。 |
增加maxFileSizeInMegaBytes或接受不载入大于限制的文件。 |