先把模板放回路径里看
聊抓取路径时,注意力常常集中在連結本身:锚文本怎么寫、要不要加 nofollow、放在第几屏。但還有一個更上层的變量——頁面属于哪一類模板。蜘蛛在站内移動,本质是在不同模板之間跳轉:列表頁分發連結,詳情頁承载内容並向邻近頁面延伸,聚合頁把散落的 URL 收拢在一起。三類模板的分工一旦混乱,比如詳情頁承担了主要的分發任務、聚合頁放出去大量重复入口,路径就會又長又杂,抓取效率跟着下降。
列表頁:新 URL 的主要出口
新内容被發現,大多是從列表頁開始的。列表頁要做的事很清楚:把一批 URL 稳定地、按顺序地送出去。判断它是否合格,可以看几点。
- 連結是否直接出現在初始 HTML 里。靠脚本在滚動或点击後才插入的列表,蜘蛛未必會触發。
- 分頁是否可達。第二頁之後的連結要能通過下一頁或頁碼鏈一路走下去,而不是只留一個加载更多的按钮。
- 排序逻辑是否稳定。按時間倒序會让老内容迅速沉底,内容量大的站点,可以给重要栏目留一個固定的入口位。
列表頁還有一個常见問题:一頁塞太多連結。当一屏里出現几百個 URL,蜘蛛分配给單個連結的關注度會下降,真正重要的新内容反而被稀释。保持列表的克制,通常比一味扩大列表更有效。
詳情頁:终点,也是路径的中轉
詳情頁是蜘蛛最常落地的位置,也是最该承担繼續走這個任務的地方。它至少要有三類出口:同分類的相邻内容、直接的上一篇與下一篇、以及一條回到栏目和首頁的路径。這三類出口性质不同——相邻内容维持横向的路径延伸,上下篇保證時間线上的连續性,回鏈則把蜘蛛拉回主干。
需要留意的是推荐模块。基于用戶行為的随机推荐、個性化推荐,會让同一個 URL 每次返回的連結都不一样。蜘蛛抓到的只是一份随机快照,路径無法复現,也难以判断哪些連結是站点真正希望被走的。比較稳妥的做法是给推荐模块设定固定規則,例如固定取同分類最新若干條,把随机部分限制在装饰性位置。
聚合頁:收口,別開口
标簽頁、专题頁、站内搜尋结果頁都属于聚合頁。它們對路径的價值是收口:把分散在多個栏目下的同主题 URL 集中到一處,方便蜘蛛一次走完。但聚合頁也最容易變成開口——每個标簽生成一個 URL、每個篩選項生成一個 URL,入口數量迅速膨胀。
處理聚合頁时,可以把對用戶展示和對蜘蛛開放分開考虑:聚合頁本身可以保留,但通過參數限制、robots 規則或連結属性的方式,控制它往外放出多少個新入口。核心原則是聚合頁的出鏈應该比列表頁更少、更集中,而不是更多。
模板調整後,做一次路径自查
- 從首頁出發,在關閉脚本的情况下,能否用纯連結走到最新發布的三层内容。
- 随机挑一個詳情頁,看它有没有通往同栏目其他頁面的稳定入口。
- 統計聚合頁數量以及各自的出鏈數,確認没有明顯異常的膨胀点。
- 核對 Sitemap 里的 URL,與列表頁、聚合頁實际能走到的 URL 是否一致。
這几項检查不需要复杂工具,手動走几遍就能發現大部分断点。
別忘了頁面本身的重量
模板越复杂,單次抓取消耗的時間越多,蜘蛛在同样時間内能走的路径就越短。列表頁如果引入了大量外部脚本、詳情頁嵌入了重型组件,抓取节奏會明顯變慢。這一步不需要做到极致,但至少要保證首屏内容的呈現不依赖大量异步請求。
路径的問题很少是某一處連結寫错,更多是模板分工混乱之後的连鎖反應。把列表頁、詳情頁、聚合頁各自该做的事分清楚,路径自然就顺了。