抓取不是一次性動作。蜘蛛抓過一個 URL,只是把它放進了已有的地图里,之後還會按自己的节奏回来看看。這個“回来”的频率,從站点這侧能感知到的就是日誌里同一個路径的訪問間隔變長或變短。它不是固定值,也不是提交一次 Sitemap 就鎖定的東西,而是根據站点和頁面给出的信号不断調整的结果。
再訪判断看两個层面
一個是站点层面:整站更新的速度、新增 URL 的數量、歷史抓取的稳定程度。另一個是頁面层面:這個具体地址在上次抓取之後有没有變化、變化是否可识別。两层信号叠加之後,才形成下一次抓取的時間安排。
站点层面的节奏信号
- 更新是否持續:一個每天都有新内容的站点,和一個几個月不動一次的站点,再訪频率的起点本来就不一样。
- 新增速度是否平稳:短時間内涌入大量新 URL,會让抓取容量被摊薄,單個頁面的再訪間隔可能被拉長。
- 抓取是否顺利:大量超时、5xx、连接中断,會让蜘蛛放慢對整站的訪問节奏,而不只是那一個出問题的 URL。
頁面层面的變化信号
頁面有没有變,需要服務器给出可判断的依據,否則蜘蛛只能靠重新下载全文来對比。
HTTP 头里的更新時間
Last-Modified 和 ETag 是成本最低的信号。前者给出内容最後修改時間,後者给出内容版本标识。如果這两個值長期不變,蜘蛛就没有理由频繁回訪;如果每次請求都返回目前時間,這個信号就失去了意义,反而容易被忽略。
内容變化的幅度
價格、库存、列表頁排序這類局部變化,和正文主体改寫、新增段落,在判断上並不等價。變化越集中在頁面主体,越容易被認定為一次有意义的更新。
几種常见誤判
- 只更新頁脚的年份或“最近更新時間”字段,正文没動。
- 頁面由 JavaScript 渲染,每次抓取看到的结构都不同,或者首屏内容為空。
- 同一 URL 每次請求返回随机推荐位、随机排序,導致内容指纹持續變動。
- 把更新時間统一寫成当天,哪怕内容没有任何修改。
- URL 频繁變換,舊地址跳轉到新地址又改回来,信号互相抵消。
让信号更接近真實情况
- 内容真正改動时再更新 Last-Modified,不要為了看起来活跃而刷時間。
- Sitemap 里的 lastmod 與實际更新時間保持一致,改了才寫。
- 保持 URL 稳定,改版时用跳轉收口,而不是让新舊地址長期並存。
- 新增内容後,從已被抓取的頁面加内鏈指向它,给蜘蛛一條能走到的路。
- 让首屏就有可讀的主体内容,不要让蜘蛛面對一個空壳再等渲染。
別忽略服務器稳定性
再訪频率的高低,最终還是建立在能不能稳定接到蜘蛛上。响應慢、間歇性 5xx、连接被重置,都會让蜘蛛降低對整站的訪問意愿。相比之下,一個内容更新不多但响應稳定、狀態碼干净的站点,往往更容易维持正常的抓取节奏。
抓取频次不是可以單獨調高調低的開關,它是站点更新节奏、頁面變化信号和服務器稳定性共同作用的结果。把這三件事做扎實,比反复提交地址更有意义。
最後提醒一句:不要用内容质量之外的技巧去暗示更新,也不要期待某個操作能立刻改變抓取节奏。观察日誌里同一路径的間隔變化,比反复猜测更可靠。