网站内容抓取工具(Google不会跟踪robots.txt文件中的逻辑(成功))
优采云 发布时间: 2021-10-02 06:11网站内容抓取工具(Google不会跟踪robots.txt文件中的逻辑(成功))
2xx(成功)
这个HTTP状态码表示谷歌的爬虫已经成功提示处理服务器提供的robots.txt文件。
3xx(重定向)
对于robots.txt,Google 将遵循RFC 1945 进行至少5 次重定向,然后停止并将其视为404 错误。这也适用于重定向链中任何被禁止的 URL,因为由于重定向,爬虫无法提取规则。
Google 不会在 robots.txt 文件中跟踪逻辑重定向(框架、JavaScript 或元刷新重定向)。
4xx(客户端错误)
Google 的抓取工具会将所有 4xx 错误解释为 网站 没有有效的 robots.txt 文件,这意味着抓取将不受限制地进行。
这包括 401(未经授权)和 403(禁止)HTTP 状态代码。
5xx(服务器错误)
由于服务器无法对谷歌的robots.txt请求提供明确的响应,谷歌会暂时将服务器错误解释为网站完全禁止访问。Google 会尝试抓取 robots.txt 文件,直到它获得不是服务器错误的 HTTP 状态代码。503(服务不可用)错误会导致非常频繁的重试操作。如果 robots.txt 连续 30 天以上无法访问,Google 将使用 robots.txt 的最后一个缓存副本。如果没有缓存副本,Google 将假定没有抓取限制。
如果需要暂停爬取,建议在网站上为每个URL提供一个503的HTTP状态码。
如果我们可以确定某个网站在由于配置错误导致网页丢失时返回5xx而不是404状态码,则网站的5xx错误将被视为404错误。例如,如果网页上返回 5xx 状态代码的错误消息是“找不到页面”,我们会将状态代码解释为 404(未找到)。
其他错误
对于因 DNS 或网络问题(如超时、无效响应、重置或断开连接、HTTP 阻止错误等)而无法抓取的 robots.txt 文件,系统在处理时将视其为。
缓存
谷歌通常会将 robots.txt 文件的内容缓存长达 24 小时,但如果缓存版本无法刷新(例如出现超时或 5xx 错误),缓存时间可能会延长。缓存的响应可以被各种爬虫共享。Google 将根据 HTTP 标头延长或缩短缓存生命周期。
文件格式
robots.txt 文件必须是UTF-8 编码的纯文本文件,每行代码必须用CR、CR/LF 或LF 分隔。
Google 会忽略 robots.txt 文件中的无效行,包括 robots.txt 文件开头的 Unicode 字节顺序标记 (BOM),并且仅使用有效行。例如,如果下载的内容是 HTML 格式而不是 robots.txt 规则,Google 将尝试解析内容并提取规则,而忽略其他所有内容。
同样,如果robots.txt 文件的字符编码不是UTF-8,Google 可能会忽略不在UTF-8 范围内的字符,这可能会使robots.txt 规则失效。
Google 目前强制执行 robots.txt 文件大小限制为 500 KiB,并忽略超过此限制的内容。您可以通过集成会导致 robots.txt 文件过大的指令来减小 robots.txt 文件的大小。例如,将排除的内容放在单独的目录中。
语法
一个有效的 robots.txt 行由一个字段、一个冒号和一个值组成。您可以选择是否使用空格,但建议使用空格以帮助提高可读性。系统忽略行首和行尾的空格。要添加评论,请在评论前添加 # 字符。请注意,# 字符之后的所有内容都将被忽略。常用格式为:.
Google 支持以下字段:
允许和禁止字段也称为“指令”。这些指令总是以指令的形式指定:[path],其中 [path] 可以选择使用。默认情况下,指定的爬虫没有爬行限制。爬虫将忽略没有 [path] 的指令。
如果指定了[path]值,则path值为robots.txt文件所在的网站根目录的相对路径(使用相同的协议、端口号、主机和域名) . 路径值必须以/开头表示根目录,该值区分大小写。了解更多。
用户代理
用户代理行标识了规则适用的爬虫。有关可在 robots.txt 文件中使用的用户代理字符串的完整列表,请参阅 Google 的抓取工具和用户代理字符串。
用户代理行的值不区分大小写。
不允许
disallow 指令指定的路径不能被与 disallow 指令组合的用户代理行标识的爬虫访问。爬虫将忽略不收录路径的指令。
Google 无法将被禁止页面的内容编入索引,但仍可以将其 URL 编入索引并将其显示在搜索结果中,不包括片段。了解如何防止索引。
disallow 命令的值区分大小写。
用法:
disallow: [path]
允许
allow 指令指定相应爬虫可以访问的路径。如果未指定路径,则该命令将被忽略。
allow 指令的值区分大小写。
用法:
allow: [path]
站点地图
Google、Bing 和其他主要搜索引擎支持 robots.txt 中的站点地图字段(如定义)。
站点地图字段的值区分大小写。
用法:
sitemap: [absoluteURL]
[absoluteURL] 行指向站点地图或站点地图索引文件的位置。此 URL 必须是完全限定的 URL,包括协议和主机,并且不需要 URL 编码。URL 不需要与 robots.txt 文件位于同一主机上。您可以指定多个站点地图字段。sitemap 字段不依赖于任何特定的用户代理,只要不禁止爬行,所有爬虫都可以对其进行跟踪。
例如:
user-agent: otherbot
disallow: /kale
sitemap: https://example.com/sitemap.xml
sitemap: https://cdn.example.org/other-sitemap.xml
sitemap: https://ja.example.org/テスト-サイトマップ.xml
行和规则分组
通过为每个爬虫重复用户代理行,可以组合适用于多个用户代理的规则。
例如:
user-agent: a
disallow: /c
user-agent: b
disallow: /d
user-agent: e
user-agent: f
disallow: /g
user-agent: h
此示例中有四个不同的规则组:
有关该组的技术说明,请参阅。
用户代理优先级
对于爬虫,只有一组是有效的。Google 的抓取工具会在 robots.txt 文件中查找收录与抓取工具的用户代理匹配的最具体的用户代理的组,以确定正确的规则组。其他组将被忽略。所有不匹配的文本都将被忽略(例如,googlebot/1.2 和 googlebot* 相当于 googlebot)。这与 robots.txt 文件中的组顺序无关。
如果为特定用户代理声明了多个组,则这些组中适用于该特定用户代理的所有规则将在内部合并为一个组。
示例用户代理字段匹配
user-agent: googlebot-news
(group 1)
user-agent: *
(group 2)
user-agent: googlebot
(group 3)
以下是爬虫选择相关组的方式:
每个爬虫跟踪的组
谷歌机器人新闻
googlebot-news 跟随第 1 组,因为第 1 组是最具体的组。
Googlebot(网络)
googlebot 跟随第 3 组。
谷歌机器人图片
googlebot-images 跟随第 2 组,因为没有特定的 googlebot-images 组。
Googlebot 新闻(获取图片时)
抓取图片时,googlebot-news 跟随第 1 组。 googlebot-news 不会抓取 Google 图片的图像,因此它只跟随第 1 组。
其他机器人(网络)
其他 Google 抓取工具遵循第 2 组。
其他机器人(新闻)
其他抓取新闻内容但未被识别为googlebot-news的谷歌爬虫跟随第2组,即使相关爬虫有对应的条目,也只有在明确匹配的情况下才有效。
规则分组
如果 robots.txt 文件中的多个组与特定的用户代理相关,Google 的抓取工具会在内部合并这些组。例如:
user-agent: googlebot-news
disallow: /fish
user-agent: *
disallow: /carrots
user-agent: googlebot-news
disallow: /shrimp
爬虫内部根据用户代理对规则进行分组,例如:
user-agent: googlebot-news
disallow: /fish
disallow: /shrimp
user-agent: *
disallow: /carrots
基于路径值的 URL 匹配
Google 将使用 allow 和 disallow 指令中的路径值来确定规则是否适用于 网站 上的特定 URL。为此,系统会将规则与爬虫试图爬取的 URL 的路径部分进行比较。根据 RFC 3986,路径中的非 7 位 ASCII 字符可以收录为 UTF-8 字符或由百分号转义的 UTF-8 编码字符。
对于路径值,Google、Bing 等主流搜索引擎支持有限形式的通配符。这些通配符包括:
路径匹配示例
/
匹配根目录和任何较低级别的 URL。
/*
相当于/。末尾的通配符将被忽略。
/$
仅匹配根目录。可以抓取任何较低级别的 URL。
/鱼
匹配任何以 /fish 开头的路径。
火柴:
不匹配:
注意:匹配时区分大小写。
/鱼*
相当于 /fish。末尾的通配符将被忽略。
火柴:
不匹配:
/鱼/
匹配 /fish/ 文件夹中的任何内容。
火柴:
不匹配:
/*.php
匹配任何收录 .php 的路径。
火柴:
不匹配:
/*.php$
匹配任何以 .php 结尾的路径。
火柴:
不匹配:
/鱼*.php
匹配任何收录 /fish 和 .php 的路径(按此顺序)。
火柴:
不匹配:/Fish.PHP
规则的优先顺序
在匹配 robots.txt 规则和 URL 时,爬虫会根据规则路径的长度使用最具体的规则。如果规则(包括使用通配符的规则)发生冲突,Google 将使用限制最少的规则。
以下示例演示了 Google 的抓取工具应用于特定网址的规则。
示例情况
allow: /p
disallow: /
适用规则:allow:/p,因为它更具体。
allow: /folder
disallow: /folder
适用规则:allow:/folder,因为当有多个匹配规则时,谷歌会使用限制最少的规则。
allow: /page
disallow: /*.htm
适用规则:disallow: /*.htm,因为匹配URL中的字符比较多,所以比较具体。
allow: /page
disallow: /*.ph
适用规则:allow:/page,因为当有多个匹配规则时,谷歌会使用限制最少的规则。
allow: /$
disallow: /
适用规则:allow:/$,因为它更具体。
allow: /$
disallow: /
适用规则:disallow:/,因为allow规则只适用于根URL。