搜尋抓取

連結挂多久才算數:临时入口與 URL 發現的窗口期

蜘蛛不是實时爬虫,一條連結只有在它到訪时還挂在頁面上,後面的 URL 才有机會進入抓取队列。本文從首頁轮播、限时活動、需登入入口等常见场景出發,說明連結存活時間與抓取周期如何错位,並给出把临时入口改造成可复用入口的具体做法。

搜尋抓取

連結挂多久才算數:临时入口與 URL 發現的窗口期

很多站点运营者遇到過這種情况:一個活動頁上线时明明挂在首頁最顯眼的位置,几天後去翻抓取日誌,蜘蛛一次都没訪問過。不是 robots 挡住了,也不是頁面打不開,而是蜘蛛到訪的时候,那個入口連結已经被換掉了。

蜘蛛發現連結的前提,是連結還在

搜尋蜘蛛不是實时爬虫。一個首頁它可能几小时来一次,也可能几天来一次,取决于站点体量、更新频率和抓取预算。它每次来訪都會解析当頁連結,把没见過的 URL 放進待抓取队列。這意味着:一條連結必须至少被蜘蛛在頁面里看到一次,它背後的 URL 才有机會進入队列。

如果某條連結只在頁面上挂了六個小时,而蜘蛛恰好這段時間没来,那么它指向的頁面就相当于從未被連結過——至少在發現层面是這样。

最容易踩坑的几類临时連結

  • 首頁轮播與焦点图:运营按排期轮換,一個位置一天換好几批,早期批次可能被完全跳過。
  • 限时活動入口:上线两三天就下线,蜘蛛還没排到就消失了。
  • 需要登入才能看到的入口:隐藏在帳號中心或後台的連結,蜘蛛看不到,頁面等于没有入口。
  • 短鏈與带跳轉的分享連結:短鏈服務不在你的控制范围内,跳轉鏈路也不稳定,蜘蛛可能只停在中間那一跳。
  • 只在特定时机出現的彈窗、浮层:渲染时机不确定,蜘蛛拿到的版本里可能根本没有這個連結。

連結存活時間與抓取周期怎么错位

抓取周期不完全由你决定,但可以估算。观察日誌里蜘蛛對首頁和几個主要栏目的訪問間隔,取一個典型值。如果這個間隔是三天,而連結只挂一天,那就得假设大概率會被错過。

判断标准很简單:連結的存活時間,要明顯長于蜘蛛對该頁面的抓取間隔。

還要注意,同一條連結出現在多個位置,命中概率會提高。只放在首頁是窗口最窄的方式;放在栏目頁、列表頁、侧邊常驻位,窗口就宽得多。

把"临时入口"變成"可复用入口"

  1. 設定一個長期存在的聚合頁,比如"往期活動""歷史专题",每次新内容都往這個頁面加連結,而不是只在首頁轮換。
  2. 活動結束後不要直接删頁面,把入口從首頁撤下但保留在聚合頁里,頁面本身保持可訪問狀態。
  3. 把這類頁面寫進 Sitemap,即使目前没有站内連結指向,也能给蜘蛛留一條稳定的發現通道。
  4. 用内鏈把活動頁與相關品類頁、内容頁互相连起来,让入口不只依赖一個位置。

連結已经下线了怎么办

如果頁面還有價值,最直接的办法是在別的頁面重新挂上連結,並在下次更新 Sitemap 时把它带上。蜘蛛對"已發現未抓取"的 URL 會有一定记忆,重新给出入口通常比從零開始快一些。

如果頁面确實不再需要,让它返回 404 或 410,比留着一個空壳頁更清楚。空頁會繼續被爬,也繼續占预算。

怎么驗證入口是否真的被看到

在抓取日誌里,把目标 URL 的首次訪問時間,和它在頁面上首次出現的時間做個對比。如果两者相隔很久,說明發現鏈路偏長;如果目标頁始终没有訪問记錄,而入口頁面有被抓记錄,那基本可以判断入口出現過又消失了。同时留意蜘蛛對入口頁面的訪問频次,频次低就意味着窗口期需要设計得更宽。

小结

URL 發現的第一道门是連結,而連結是有寿命的。在安排頁面上下线的时候,顺手想一下蜘蛛這個周期里會不會来、来的时候還能不能看到這個入口,很多"蜘蛛不抓我"的問题就不用再逐條排查了。