什么是网站地图?XML结构、发现和限制
无抓取抓取浏览器通过渲染只有在JavaScript执行后才出现的内部链接页面来补充基于网站地图的发现。
简而言之
- 网站地图描述了网页或网络系统如何表现的可观察部分。 有用的定义将概念与工作流程可以验证的数据、状态和请求联系起来。
- 响应HTML和浏览器状态是不可互换的。 一些值立即可用,而其他值则需要渲染、交互或稍后结构化响应。
- 选择返回完整数据的最轻方法。 在足够时解析HTML,在适当时检查结构化请求,并在浏览器执行至关重要时使用浏览器。
- 完成必须用内容证据证明。 稳定的标识符、明确的结束状态和特定源的准备条件比固定延迟更安全。
- 负责任的收集尊重发布的访问规则和容量。 公开可见性并不能解除条款、法律义务、机器人指令或速率控制。
什么是网站地图?
网站地图是一个机器可读的文件,声明网站所有者希望爬虫发现的URL。XML是最具表现力的通用格式,尽管文本文件和提要也可以被搜索引擎使用。网站地图有助于发现;它不保证每个列出的URL都会被爬取、编入索引、排名或被视为规范的。
在XML协议中,网站地图包含一个包含每个资源一个URL条目的URL集合。每个条目需要一个位置,并可以包含可选元数据,如最后有意义的修改时间。当接收爬虫支持时,图像、视频、新闻和语言替代扩展可以添加专业信息。
网站地图索引指向多个网站地图文件。它允许大型网站按内容类型、日期、地区或运营所有者拆分清单。索引是网站地图文件的目录,而不是内部URL条目的替代品。当修改元数据准确时,爬虫可能只获取已更改的子文件。
关键区别是实际的:数据工作流应该识别拥有目标值的层。该层可能是文档响应、浏览器内存、渲染节点、后台响应或服务器端策略。一旦层被确定,工作流可以以更少的假设收集值,并将其验证与用户实际接收到的页面行为。
网站地图如何工作
当过程分为可观察的阶段时,网站地图变得更易于理解。每个阶段都会创建可以在响应、浏览器、网络日志或提取的记录集中的证据。
发布者生成文件
CMS、构建过程或专门任务选择规范公共URL并以支持的格式序列化它们。生成应反映现场使用的相同URL规则。
文件被公开
网站通常在稳定的公共URL上托管网站地图或索引,并可以在robots.txt中宣传该位置或通过搜索引擎工具提交。
爬虫获取并解析它
消费者在将条目添加到发现队列之前验证编码、XML结构、主机范围和绝对URL。
URL行为单独检查
列出一个URL表示发布者希望它被发现。爬虫仍然评估状态代码、重定向、规范信号、内容和访问规则。
新鲜度影响有用性
陈旧的条目浪费爬取注意,缺失的条目延迟发现。准确的修改时间戳只有在表示有意义的页面变化时才有用。
这些阶段可能重叠、重复或由不同系统处理。因此,提取计划应遵循实际请求和状态序列,而不是假设一个页面加载事件代表整个生命周期。浏览器开发者工具很有用,因为它们将文档、网络、存储和运行时视图并排。
关键形式和相关概念
以下区别防止常见的类别错误。它们还帮助团队为此工作选择解析器、HTTP客户端、浏览器、调度程序或爬取策略。
| 概念 | 它代表什么 | 典型用途 |
|---|---|---|
| XML网站地图 | URLs加可选元数据和扩展 | 一般搜索发现和大型库存 |
| 网站地图索引 | 引用多个网站地图文件 | 分区或大型网站 |
| 文本网站地图 | 每行一个绝对URL | 没有元数据的简单库存 |
| HTML 网站地图 | 面向用户的内部链接页面 | 导航辅助而非 XML 协议 |
标签只有在能够预测行为时才有用。如果同一网站上的两条路径通过不同层返回数据,则即使产品团队用一个建筑术语描述它们,也应将其视为不同的提取表面。路径级观察胜过域级假设。
这对网页抓取和数据收集的重要性
当读取错误层时,网络收集会悄然失败。解析器可以返回有效的 HTML,但缺少目标记录。浏览器可以呈现一个令人信服的外壳,而所需的请求被拒绝。一个序列可以在重复相同记录的同时返回完整的批次。下面的检查将网站地图与数据质量相连接,而不是与工具偏好有关。
种子 URL 库
抓取程序可以在跟踪网站链接之前解析网站地图树。这快速地暴露出导航未显示的深层页面。
比较声明与现实
将网站地图 URL 与实时抓取进行差异比较,以查找孤立页面、未列出页面、重定向或过期条目。
分段处理
分开的网站地图文件通常会揭示有用的操作组,例如产品、文章、位置、图像或语言变体。
添加渲染发现
网站地图可能是不完整的。渲染 JavaScript 密集型导航并跟随公共链接,可以添加网站声明库中遗漏的 URL。
浏览器是该决策树中的一个选项。 Scrapeless Scraping Browser 产品页面 描述了托管的浏览器界面,而 Scraping Browser 入门文档 涵盖了连接和会话参数。仅在需要浏览器执行的状态下使用浏览器渲染,对于已经在响应中可用的内容,保留更简单的获取和解析路径。
实用的诊断工作流程
可靠的诊断始于比较,而非自动化代码。保留第一个响应,观察实时界面,并将每个目标字段连接到创建它的事件或资源。
- 检查每个网站地图指令的 robots.txt,然后仅在备用情况下检查常见根位置。网站可以发布多个文件或跨主机索引。
- 检测获取的文件是 URL 集还是网站地图索引。递归处理子网站地图位置,同时防止循环和重复下载。
- 验证位置是绝对的、正确转义的,并且在网站地图位置的许可主机或路径范围内。
- 小心规范化 URL,但保留网站认为是规范的区别。在没有证据的情况下,切勿抹去有意义的大小写、路径、本地化或查询差异。
- 采样列出的 URL 并验证最终状态、重定向目标、规范目标和内容。一个语法上有效的网站地图仍然可能包含操作上不良的条目。
将结果文档化为小型提取合同:目标 URL 模式、公共上下文、源层、准备条件、选择器或响应字段、唯一键、继续规则、结束规则和验证检查。此合同比包含相同假设而没有命名的脚本更耐用。
在定义合同时使用来自主要技术文档的证据。相关的基础知识包括 网站地图 XML 协议 Google 网站地图创建指南。这些来源描述平台和协议的行为;目标网站的实时行为仍然需要自己的观察。
常见错误
关于网站地图的大多数失败来源于将方便信号替代工作流程所需的实际状态。以下错误可能返回似是而非的输出,这使它们比明显错误更危险。
- 将网站地图视为完整的站点库存会错过未列出和通过 JavaScript 发现的页面。
- 将每个列出的 URL 视为可索引忽略访问规则、noindex 指令、规范信号和响应状态。
- 对每个 URL 使用文件修改时间会导致新鲜度元数据噪声较大,实用性降低。
- 忘记网站地图索引将导致抓取程序收集子文件 URL,而不是实际内容 URL。
- 混合主机或无效的相对 URL 可能会把条目推向协议的预期范围之外。
通过内容级断言来防止这些失败。要求一个已知容器、至少一个稳定的键(当结果被期望时)、批次内没有重复键、一致的排序(在排序重要的情况下),以及一个被识别的空状态或结束状态。存储足够的上下文以在不记录凭据或私人数据的情况下重现可疑结果。
可维护工作流程的最佳实践
优先考虑稳定的含义而不是视觉位置。 选择器和规则应描述值的角色,而不是其在布局中的临时位置。当结构化响应是页面使用的权威公共来源时,保留相关字段映射并对其进行验证。
明确状态。 记录本地化、视口、路径、公共会话假设、过滤器、排序顺序和继续值。一个没有其状态的值可能无法与后续捕获进行比较。
分离发现、获取、渲染和提取。 每个阶段都有不同的成本和故障模式。分离使工作仅渲染需要它的 URL,重新处理存储的响应而无需新流量,并在记录进入下游系统之前检查不完整的记录。
使用有限的工作。 定义每次运行的最大页面、滚动动作、活动请求和记录。边界保护目标服务和收集系统,以应对下一个控制循环、光标重复或页面创建意外的抓取空间。
尊重出版商和用户。 检查适用的 robots.txt,遵循条款和法律,仅收集为特定目的所需的公共字段,避免私人或受限区域,并保持请求量在保守范围内。技术访问与每种用途的授权并不相同。
结论
网站地图最有用的地方是作为操作模型:识别数据存在的位置,观察该状态是如何生成的,选择能够重现该状态的最小收集方法。最强的工作流程比较源状态和呈现状态,遵循明确的继续信号,并使用持久键验证记录。
从一个代表性的 URL 开始,在扩展之前编写提取合同。这个小步骤可以在修复成本仍然较低时暴露隐藏的时序、路由、分页和政策假设。只有在工作流程能够解释每个记录为何完整以及每个字段来自何处之后,才进行扩展。
准备检查 JavaScript 驱动的页面吗?
当公共页面需要浏览器执行、交互或呈现状态检查时,请使用无抓取浏览器。
开始免费 →常见问题
网站地图用简单术语来说是什么?
网站地图是一个列出站点所有者希望抓取者发现的 URL 的文件,通常还带有关于页面更改时间的可选元数据。
网站地图是否保证索引?
不。网站地图是一个发现提示。搜索引擎仍然决定是否根据访问、质量、重复和其他信号抓取和索引每个 URL。
网站地图与网站地图索引有什么区别?
网站地图列出内容 URL,而网站地图索引列出包含这些 URL 的单独网站地图文件。
网络爬虫是否只应使用网站地图?
不。将网站地图解析与链接爬取和呈现发现结合使用,因为网站地图可能是过时的、不完整的或缺失的。