搜索引擎爬虫会从已知网页上的链接、Sitemap等渠道发现网址,再安排抓取。对于已经知道的网址,爬虫还会再次访问,检查页面有没有变化。站长可以提供清楚的入口和准确的更新信息,但不能指定爬虫一定何时到访。
下面以Google为例,说明一篇新文章怎样被找到,以及修改后的内容应怎样检查。先记住两个不同结果:Google知道这个网址,不代表已经读取正文;Google重新读取了正文,也不代表新内容已经进入索引。
新网页需要一个能被找到的入口
Google并没有一份包含互联网所有网页的完整目录。它会从已经知道的页面继续发现新网址,而网站自身能维护的入口,主要是站内链接和Sitemap。
假设你刚写好一篇教程。它虽然已经公开发布,但还没有加入课程目录,其他文章也没有提到它,读者只能输入完整网址才能访问。这时应先把它连接到相关内容:在对应目录中列出教程,或在需要这份说明的旧文章里增加链接。链接所在页面本身也要能正常访问,并能从网站其他位置找到。
不同入口各有作用:
- 站内链接让读者和爬虫从现有页面走到新文章,也帮助说明两篇内容的关系。
- 其他网站的链接可能让爬虫在访问那个网站时发现你的网址。新站外链较少,并不意味着永远无法被发现。
- Sitemap集中列出希望搜索引擎了解的网址,并可提供更新时间等信息,补充普通链接的发现路径。
Google建议重要页面至少获得网站内另一页面的链接。链接最佳实践和Sitemap介绍说明了两者的作用。
如果某篇孤立文章已经列入Sitemap,Google仍可能发现它;但读者在网站里找不到它的问题并没有解决。维护站内链接和Sitemap是两件可以同时完成的事,不需要二选一。提交Sitemap也不保证其中每条URL都会被抓取或收录。
能点击的按钮,不一定是爬虫能提取的链接
浏览器可以执行点击事件,所以一个按钮即使没有普通链接,也可能带你进入另一页。爬虫发现网址时,需要能够提取实际目标。Google推荐的基础形式,是带有效href的a元素,例如:
<a href="/google-seo-learning-path/">谷歌SEO学习路径</a>
如果元素只有JavaScript点击事件,没有可解析的href,Google就不能可靠地从中提取网址。反过来,JavaScript动态加入页面的链接,只要最后形成合规的a href,也可以被发现。区别在于最终链接的形式,而不是网页有没有使用JavaScript。Google的可抓取链接说明给出了具体例子。
检查课程目录、分页或“相关文章”时,可以查看链接实际指向哪里,再确认目标没有报错,也没有意外跳到首页或另一篇文章。锚文本应能让读者预先知道会打开什么内容,例如“如何创建Sitemap”,通常比几个连续的“点击这里”更清楚。
nofollow也不是让一个网址彻底消失的开关。带该属性的链接通常不会被跟随,但目标网页仍可能通过其他链接或Sitemap被发现并抓取。它既不能可靠代替robots.txt控制访问,也不能代替noindex阻止索引。Google的链接属性说明区分了这些用途。
Google为什么会再次访问同一个网址
已经抓取过的网页仍可能增加内容、修改信息或被移除,Google需要通过回访发现这些变化。回访安排同时受到抓取需求和网站承载能力的影响:内容是否需要更新、网址在网络上的受关注程度,以及服务器能否稳定响应,都与抓取安排有关。
这并不存在一个适用于所有网站的固定周期。更新频繁的内容与长期稳定的说明页,需求可能不同;服务器持续变慢、返回错误或限流信号时,Google也可能减少抓取。Google抓取预算文档解释了需求与容量的区别。单靠每天重复提交网址,无法抵消实际访问故障。
站长能提供的一项更新信息,是Sitemap里的lastmod。它应对应页面最后一次重要修改,例如主要内容、结构化数据或链接的实质变化。只把页脚版权年份改了,不应让所有文章看起来都刚刚更新。
Google会在lastmod持续准确、能够核对时使用它;priority和changefreq则不会被Google用于安排抓取。把changefreq填写成“daily”,不等于要求爬虫每天来一次。Sitemap创建说明列出了这些字段的实际处理方式。
网页更新后,按这个顺序核对
先保留本次主要修改的时间和内容,再检查下面几项。这样才知道自己是在等待回访,还是还有访问问题没有处理。
- **确认公开网址已经显示新内容。**用未登录的访问方式打开文章,核对改动是否真正上线。编辑器里保存了新段落,或预览里能看见它,都不足以说明公开页面已经更新。对于使用缓存的网站,还要确认实际返回的不是旧版本。
- **比较上次抓取时间和修改时间。**在Search Console中检查准确URL的索引版本信息。如果上次抓取发生在修改之前,这次记录自然不能证明Google已经读到新内容。不要仅因为旧记录还在,就再次改动已经正确的设置。
- **需要确认当前访问情况时,测试实际网址。**重点查看是否允许抓取、页面获取是否成功,以及主要内容能否被看到。实际测试检查的是当前版本,不代表Google的常规抓取和索引更新已经完成;它也不检查全部索引条件。网址检查工具说明解释了这两类结果的差别。
- **排除明显障碍后,再选择合适的通知方式。**对于少量新增或确有改动的网址,可以使用“请求编入索引”;这需要相应Search Console资源的所有者或完整用户权限,而且存在配额限制。大量URL则适合通过更新后的Sitemap提供信息。重复请求同一URL不会加快抓取。Google重新抓取指南给出了这两种方式的适用条件。
举个假设情形:你上午改好了教程正文,检查结果显示上次抓取还在修改之前,而实际网址测试已经能看到新内容。这时能够确认的是“新内容现在可以获取”;还不能说“索引已经更新”。在入口、内容和访问都正常的前提下,可以请求处理这次改动,再观察后续记录,无需反复重复上述操作。
Sitemap报告也要这样读。文件被Google成功读取,并且文件确实列出目标URL,才说明这条地址通过该Sitemap提供给了Google;这仍不说明文章已经被访问。要核对具体文章,仍应回到该URL的记录;若想进一步看实际访问,可按Google抓取排查建议检查服务器日志,而不能把Sitemap处理时间当成文章抓取时间。
用一篇教程,把发布与更新串起来
假设新教程地址是https://example.com/tutorial/。发布前先确认这就是准备长期使用的公开地址,而不是带预览参数的链接。发布后,从文章中心点击进去,检查它直接打开这篇教程;在相关文章里加入能够解释下一步任务的链接;再打开实际Sitemap文件,确认列出的也是这个最终地址。
如果文章中心只展示最新12篇,旧文章滑出首页后就没有其他入口,还要补上可访问的分页或分类目录。读者可以一路找到第13篇,爬虫也需要能提取这些后续页面的URL。只在用户滚动后才向接口请求数据、又没有等效分页入口时,应检查后续文章是否真正出现在可发现的链接结构里。
几天后你更新教程第4步。先记下修改时间和一小段能识别新版本的文字,检查未登录公开页确实返回这一段,再核对Sitemap里的修改记录。若编辑器显示新版、公开URL仍是旧版,先处理缓存或发布状态;这时重复请求Google,只可能让它继续拿到旧内容。
现在假设公开页已经更新,网址检查的上次抓取仍在修改之前,而实时测试能看到第4步新文字。此时可以记录“公开发布完成、当前可读取,常规抓取记录待更新”,必要时对这个重要URL请求编入索引。后续新抓取时间超过修改时间,再核对处理结果。每一步的证据不同,不应把请求成功消息写成文章已被收录。
发现路径有了,还要排除这些阻碍
Google已经知道URL后,下一步才是能否取得预期内容。检查时先围绕这个页面的实际结果处理,不要一看到“未索引”就调整全站设置。
| 观察到的情况 | 应检查和处理的内容 |
|---|---|
| 目录或旧文里的链接指向错误URL | 修正来源页链接,确认它直接到达预期内容;别只修改Sitemap |
| 本应公开的文章被robots.txt拦截 | 核实屏蔽规则的范围,解除误挡后重新检查;保留原本有意限制的路径 |
| 页面需要登录,或安全规则阻断请求 | 确认这是否本来就是公开内容,再修正错误的访问限制 |
| 服务器持续返回错误或限流 | 先排查可用性与响应问题,再验证Google能否取得页面 |
| URL返回404,但内容本来已经永久删除 | 保留合理的删除状态;若确有替代页,再处理对应迁移关系 |
robots.txt管理抓取访问,noindex管理索引意图。如果希望Google读取noindex,就不能又让robots.txt阻止它访问页面。robots.txt介绍和noindex说明解释了这个前提。对于服务器响应,应结合Google的HTTP状态码说明判断,不能为了让报告没有错误,就让已删除的URL全部返回正常页面。
如果已经确认Google抓到了预期内容,接下来仍未收录,就需要检查索引限制、规范版本和页面内容。发现与抓取阶段的工作可以暂时结束,继续参照抓取、索引与排名的区别判断下一步。
日志里看到Googlebot,还要确认它访问了什么
网站日志能补充“是否收到访问请求”的证据。让维护人员按准确路径和时间范围查询,至少留下时间、请求URL、响应状态、User-Agent和来源IP;使用CDN时,也要确认看的日志能反映边缘访问,不能只查源站后就断言完全没有请求。
User-Agent里写着Googlebot不等于一定来自Google。可以按官方方法匹配公布的IP范围,或者做反向DNS查询,再把得到的合规主机名正向解析回原IP。只检查主机名字符串里有没有“google”,不足以验证来源。Google请求验证方法
确认请求后,还要区分对象:访问的是教程HTML、配图、robots.txt还是Sitemap?只有Sitemap请求,不能说教程正文已抓取。一个成功返回200的HTML请求说明服务器返回了内容,也不单独证明正文完整或已经索引。若响应是跳转,继续检查最终目标;若多次429或5xx,就先解决限流和服务故障。
304通常表示服务器认为所请求资源自上次版本以来未变化,可以复用已有版本。不要为了让日志看起来“全部成功”把它当错误消除。反过来,如果正文已实质更新,服务器却仍错误地让缓存持续沿用旧版,就需要开发人员核对缓存验证与响应配置。这是具体的新旧内容一致性问题,不能通过刷新文章日期解决。抓取效率与缓存说明
日志分析的结论应保持在证据范围内:已验证的Googlebot在某时请求了某URL并取得某状态。Google最终是否选择该页进入索引、展示哪个版本,仍然回到网址检查和后续搜索表现。手动实时测试产生的抓取,也不能当作自然回访频率的样本。
下一步:拿一篇新文章做核对
找到它的站内入口,确认链接目标和Sitemap记录,再检查当前内容及上次抓取信息。该修的入口或访问问题修好,必要的请求提交后,就可以等待后续处理。更多教程可从谷歌SEO学习路径继续,不必把每次等待都变成一次全站调整。
常见问题
普通博客能用Google Indexing API批量催收录吗?
按Google的现行适用范围,Indexing API用于符合要求的招聘信息,以及在VideoObject中嵌入BroadcastEvent的直播页面。普通博客文章不属于这条提交渠道的适用内容。
只改文章日期,会让Google更快回来吗?
不能据此期待更快回访。日期应反映真实修改;没有实质内容变化时,不应通过刷新日期制造更新信号。先改正或补充真正需要更新的内容,再保持页面与Sitemap信息一致。
新站是否应该先优化抓取预算?
通常应先检查重要页面的链接、Sitemap和访问情况。Google的专项预算建议主要面向大型、频繁更新的网站,或大量URL长期处于已发现但未索引状态的情况。几篇新文章尚未被抓取,不能单独证明预算不足。