發布一個新頁面之後,很多人的第一反應是刷新抓取日誌,看蜘蛛有没有来。實际上,從頁面可公開訪問,到它進入待抓取队列,中間隔着几個环节:入口有没有被走到、連結能不能被解析、服務器有没有稳定回應。把這几步拆開核對,通常比反复提交更有效。
一、發現的前提是有一條蜘蛛能走的連結
蜘蛛不會凭空知道一個新 URL。它需要從某個已经抓取過的頁面出發,沿着 HTML 里可解析的連結走到新地址。所以新頁面發布後,第一件该做的事是確認它至少出現在一個抓取频率較高的頁面上。
- 首頁或栏目首頁的最新列表,通常是抓取频率最高的位置;
- 相關老頁面正文里的自然内鏈,能提供语境、也提供入口;
- 分類列表頁、专题聚合頁,适合承载一批同时上线的新 URL。
如果新頁面只挂在很深的层級,或者只能從站内搜尋、篩選结果里進入,發現時間往往會明顯拉長。連結层級越浅、入口越靠近高频抓取頁面,被走到的机會越大。
二、Sitemap 與提交入口是补充,不是替代
Sitemap 声明和手動提交当然有用,但它們的作用是告诉蜘蛛「這里有個地址」,前提仍是這個地址可訪問、可解析。常见的誤判是把 Sitemap 当成唯一入口:頁面在线,却没有任何站内連結指向它,Sitemap 里寫了,日誌里依舊長期没有抓取记錄。這種情况下更應该补的是内鏈,而不是繼續增加提交次數。
提示:提交行為不等于收錄承诺,它只是把 URL 放進待處理列表。是否抓取、何时抓取,取决于蜘蛛自身的調度。
三、让連結可解析,比让連結更多更重要
可發現性的几個细节
- 用标准 a 标簽加 href,不要用纯脚本跳轉代替連結;
- URL 不要依赖点击之後才寫入,静態寫在 HTML 里最稳;
- 避免把入口藏在需要交互之後,比如点击展開、滚動加载。
需要說明的是,蜘蛛優先解析的是 HTML 中已经存在的連結。依赖用戶操作才出現的地址,發現時間可能被推迟到渲染阶段甚至更晚,而渲染又受抓取配額影响,不确定性更大。
四、服務器响應决定發現之後能不能立刻抓
即便連結被走到,如果服務器响應慢、频繁返回 5xx、或者经常超时,蜘蛛會倾向于降低该站点的抓取频率,新 URL 的排队時間随之變長。集中上线大量頁面时,尤其要注意响應時間是否稳定,別让一次發布把整体抓取节奏拖慢。
五、發布流程里的检查顺序
- 確認頁面可公開訪問,狀態碼正常,没有登入墙與拦截規則;
- 確認至少有一條来自高频抓取頁面的内鏈;
- 確認連結是可解析的 a href,而不是靠脚本生成;
- 更新 Sitemap,並核對里面的 URL 與實际地址一致;
- 观察几天抓取日誌,確認是否出現该路径的請求记錄。
如果日誌里長期没有该 URL 的請求,優先回头检查第二步和第三步,而不是重复第四步。發現延迟這件事,多數时候卡在入口,而不是卡在提交。