搭蜘蛛池的人常有一個誤解:入口頁被蜘蛛抓過一次,就算跑通了。實际上抓取是一次性的動作,重訪才是持續获得 URL 發現机會的前提。搜尋引擎的調度系統要不要再回来,取决于它對這個地址的判断,而不是你希望它回来。
重訪由什么决定
大致上,調度會综合几件事:這個 URL 過去返回的内容有没有變化、站点整体是否活跃、响應是否稳定、站内站外的連結是否還在指向它。任何一項變差,重訪間隔都可能被拉長。
- 内容是否發生過實质變化
- 頁面與站点整体的更新活跃度
- 响應狀態碼是否長期稳定在 200
- 服務器响應時間與超时比例
- 内外部連結是否持續存在
這几項里,前两項决定值不值得再来,後三項决定来不来得了。许多入口頁的問题不在内容,而在後者。
内容變化不等于天天發新文章
入口頁不需要像资讯站那样高频更新,但長期一字不變,調度對它的優先級自然會往下調。可行的做法是让頁面的一部分随环境變化,比如:
- 列表区按規則轮換展示的目标連結
- 時間戳、統計數字等自然變動的字段
- 定期补充新的聚合條目,而不是整頁重寫
- 清理已经失效或不再使用的連結
變化要有意义。用脚本每天改几個無關字符,對抓取調度来说並没有区別,反而容易让頁面结构變得混乱。
重訪率不是可以設定的參數,它是入口頁長期表現的结果。
可用性往往比内容更致命
蜘蛛来過之後,如果下一次訪問遇到超时、502、證书错誤、跳轉到驗證頁,重訪間隔就會被拉長,有些情况下這個地址會被降權處理。常见的情况包括:
- 服務器承载不足,蜘蛛集中抓取时直接超时
- WAF 或 CDN 規則把爬虫請求拦成 403
- 入口頁被临时下线,返回 404 或 410
- HTTPS 證书過期或配置错誤
- 頁面主体依赖 JS 渲染,而爬虫拿到的是空壳
這些問题的共同点是,你自己訪問时未必能發現。用不同 UA 實际請求一次,看返回的狀態碼和正文,比看後台报表更直接。
連結结构决定還有没有路回来
蜘蛛记住一個地址,很大程度上是靠連結。如果入口頁只靠某一個上級頁面带路,而那個頁面的連結被撤掉,重訪的通道也就断了。相對稳妥的做法是:
- 让入口頁處在至少两條相互獨立的連結路径上
- 避免把入口頁放在需要多次点击才能到達的位置
- 目标連結與入口頁之間保持可解析的 HTML 連結
- 入口頁之間不要形成封閉的环形,容易造成抓取资源空轉
連結一旦撤下,重訪不會立刻停止,但會随着時間衰减。這也是轮換入口頁时需要预留過渡的原因。
哪些做法會让蜘蛛不再回来
除了上面提到的可用性問题,還有一些操作會直接削弱重訪意愿:频繁更換域名而不做過渡、同一入口頁反复改 URL、大量入口頁内容互相複製、整站只做跳轉没有可讀内容、短時間内向站点灌入遠超承载的連結。這些做法不一定立刻出問题,但抓取频率的變化通常滞後几周才顯現。
日常可以检查的几件事
如果發現某個入口頁的抓取频率下降,可以先按顺序排查:狀態碼是否正常、响應時間是否明顯變長、頁面内容是否長期未變、指向它的連結是否還在、是否被 robots.txt 或响應头挡住。多數情况下問题就出在這几項里,不需要一開始就怀疑所谓被惩罚。把入口頁当成需要長期维護的普通站点頁面来對待,重訪率通常不會差到哪里去。