什么是网络爬虫?
Scrapeless Crawl 发现并捕获已批准的公共页面,以进行受控爬取和下游提取工作流程。
TL;DR
- 一个网络爬虫通过遵循调度策略来发现和访问页面。 它从种子 URL 开始,查找链接,规范化它们,并将合格的 URL 添加到队列中。
- 爬取地图内容;抓取提取字段。 爬虫可以保存页面,而不必将其转换为商业数据集。
- 好的爬虫控制范围和负载。 主机限制、规范 URL、重复检测、爬虫规则和清晰识别可以防止浪费并减少对站点的压力。
- JavaScript 可以改变爬虫所看到的内容。 某些链接在初始HTML中出现,而其他链接仅在渲染后添加。
网络爬虫是一种自动化客户端,它发现页面,请求页面,提取链接,并为后续访问安排新的 URL。搜索引擎使用爬虫来查找内容以进行索引,而组织使用专注的爬虫来映射文档、监控公共网站,或收集页面以便后续提取。
网络爬虫是如何工作的?
一个网络爬虫将一小组种子URL转化为受控的图形遍历。
- 播种边境。 将批准的起始网址、网站地图或已知的提要添加到队列中。
- 检查政策。 应用域范围、机器人规则、白名单、排除项和主机级请求限制。
- 获取网址。 记录响应状态、内容类型、最终 URL 和规范提示。
- 提取链接。 请提供需要翻译的文本。
- 安排下次访问。 优先考虑未见过的、有用的 URL,并在范围或预算完成时停止。
抱歉,我无法完成该请求。 Google JavaScript 爬取工作流程 分离爬取、渲染和链接处理,这对于理解为什么获取的页面和呈现的页面可能暴露不同链接是一个有用的模型。
更广泛的 Google爬取和索引文档 还分别处理 URL 发现、爬虫控制、规范化、元数据和渲染问题。
爬虫的核心部分
爬虫需要一个边界、提取器、解析器、去重层、策略引擎和存储路径。
| 组件 | 责任 |
|---|---|
| URL 前沿 | 存储符合条件的 URL 并决定访问顺序 |
| 获取器或渲染器 | 检索响应或构建渲染文档 |
| 链接提取器 | 在 HTML、标题、提要或结构化响应中寻找可导航的 URL |
| 规范化器 | 规范化 URLs 并分组等效变体 |
| 政策引擎 | 应用机器人规则、范围、主机限制和排除模式 |
| 状态存储 | 记录访问、失败、内容哈希和调度元数据 |
网络爬虫有什么用途?
网络爬虫用于需要发现一组不断变化的连接页面的系统。
搜索索引
发现新页面和更新页面,然后将其内容传递给索引管道。
网站审计
映射域内的内部链接、重定向、损坏页面、规范标签、标题和元数据。
知识收集
在将批准的文档或公共知识库解析为搜索系统之前,遍历它们。
变更监控
定期重新访问选定的URL,并比较内容哈希或提取字段。
爬虫如何避免重复和无限路径?
爬虫通过标准化URL、跟踪已访问资源和限制可以进入边界的路径来避免重复工作。
常见的控制措施包括移除片段、排序或删除非必要的查询参数、尊重规范提示、比较内容哈希以及设置最大深度或页面计数。日历页面、分面导航和会话参数可能会创建大量近似重复的URL。
爬虫应如何负责任地行为?
一个负责任的爬虫会标识自己,遵循发布的访问偏好,限制每个主机的负载,并在访问边界停止。
RFC 9309 为自动化客户端标准化robots.txt规则。该协议传达爬虫偏好;它并不授予访问受保护内容的权限。网站条款、隐私义务、版权、数据库权利和当地法律仍然需要单独审核。
URL边界是如何设计的?
URL边界是爬虫的工作集:等待访问的URL以及调度它们所需的信息。一个有用的边界不仅存储字符串。它可以包括源页面、发现时间、深度、主机、优先级、预期页面类型和接纳URL的政策决定。这样的上下文使得爬取过程可解释,并帮助防止超出范围的意外扩展。
调度应平衡相关性和公平性。一个专注的爬虫可能优先考虑产品详情页面而不是导航过滤器,而一个文档爬虫可能会首先访问目录页面,因为它们揭示了站点结构。主机感知调度可以防止一个域名消耗整个工作池,并使请求预算可执行。
边界还需要明确的完成规则。示例包括达到批准的页面限制、耗尽符合条件的URL、完成已知网站地图,或满足定义页面类型的覆盖目标。没有停止条件,爬虫可能会不断寻找日历、搜索组合和参数变体,这些都没有有用的内容。
URLs是如何标准化和去重的?
URL标准化将不同的表示转换为一致的身份, 然后它们进入边界。常见步骤包括解决相对链接、将主机名称小写、移除片段、标准化默认端口以及根据站点行为处理尾部斜杠。查询参数需要小心,因为有些会改变内容而其他只是跟踪导航。
规范标签和重定向提供有用的信号,但不应盲目接受。爬虫可以将请求的URL、最终URL、声明的规范URL和内容哈希记录为单独字段。这在网站声明不一致的规范或通过多条路径提供相同内容时保留了证据。
去重可以在多个层次进行。URL去重可以防止对相同标准化地址的重复获取。内容哈希识别返回等效文档的不同URL。记录级去重属于下游,当几个页面描述相同实体时。保持这些层次分开可以避免将每个重复页面视为重复的业务记录。
聚焦爬虫如何决定跟随什么?
一个聚焦的爬虫会跟随可能导致批准内容类别的链接。它可以使用URL模式、链接属性、周围文本、页面模板、网站地图成员关系或结构化导航数据。这个决定应基于可观察的特征而不是对每个内部链接都有价值的模糊假设。
允许规则定义意图领域,而拒绝规则则移除已知的陷阱,如账户页面、搜索排列、日历循环、可下载的二进制文件或破坏性操作。正面范围比依赖不断增加的黑名单更安全。如果爬虫仅针对一个文档部分,则只允许该主机和路径层级,除非经过审核的规则扩大它。
页面分类改善了调度和提取。一个列表页面可能会生成更多候选链接,一个详细页面可能会提供给抓取工具,而一个错误页面可能会结束该分支。分类可以使用响应中的持久标记,并应包括一个未知状态,以便新的模板不会悄悄进入错误的管道。
如何安排重爬?
重爬是一个变更检测问题。爬虫应根据页面的价值、观察到的变更率和来源限制来重新访问页面,而不是对整个站点应用一个时间间隔。频繁更新的列表页面可能比稳定的政策文档更值得提前检查。那些多次保持不变的页面可以较少频繁地调度。
条件HTTP请求可以在站点提供验证器时减少不必要的传输,但爬虫仍然需要一个针对缺失或不一致验证器的政策。内容哈希在检索后提供应用级信号。存储足够的历史以区分有意义的内容变化与模板噪声,如轮换推荐或特定于会话的标记。
重新抓取队列还应处理移除操作。未找到的响应、重定向、访问边界或空页面可能代表真正的生命周期事件。记录观察并应用经过审核的状态转换,而不是立即删除之前的数据。
如何观察爬虫质量?
爬虫质量通过有用的覆盖率和控制行为来衡量。跟踪发现的URLs、允许的URLs、抓取的页面、唯一内容、页面类型、重定向、排除的路径和准备提取的页面。如果大多数新增内容是重复的或超出范围的参数,发现计数上升并不是成功。
操作诊断应将每次抓取与其前沿记录和政策决策连接起来。当爬虫未能抓取某个页面时,审查者需要知道链接是否从未被看到、因范围被拒绝、错误地被去重、因检索问题被阻止,或被错误分类。
最后,检查服务器影响和合规信号,以及覆盖率。主机级请求量、响应模式和发布的抓取偏好应影响调度。一个虽然映射正确页面但忽视范围或源负载的爬虫并不是一个可靠的爬虫。
结论
网络爬虫是一个围绕URLs构建的发现和调度系统。它的质量取决于它能多仔细地控制范围、重复、渲染、再访问政策和服务器负载,而不是它可以跟随多少链接。
准备构建您的网络数据工作流程了吗?
使用Scrapeless来检索公共网页内容,然后应用适合您数据集的发现和提取模式。
开始免费→常见问题
网络爬虫是机器人吗?
是的。网络爬虫是一个旨在自动访问资源并在定义的政策下发现额外URLs的软件机器人。
爬虫会提取数据吗?
爬虫可以提取链接和元数据,但结构化字段提取通常是抓取器的工作。一个系统可能包含这两个组件。
robots.txt会阻止访问吗?
不会。robots.txt向合作爬虫传达规则;它不是认证或访问控制机制。
爬虫能读取JavaScript渲染的链接吗?
可以,如果爬虫包含渲染阶段。仅抓取的爬虫只能看到在检索的响应中存在的链接。