讨论蜘蛛池时,大家更關心目标 URL 有没有被抓取,但有一個更靠前的环节常被忽略:入口頁自己有没有進入搜尋蜘蛛的待抓队列。入口頁如果長期不被訪問,挂在它上面的目标連結也就失去了被顺藤摸瓜發現的机會。本文把“入口頁自身如何被發現”這件事拆開说清楚。
入口頁自己也需要一個被發現的理由
搜尋蜘蛛不是随机漫游的,它的抓取起点来自几個相對固定的来源:已收錄頁面的連結、站点地图、主動提交的地址,以及歷史抓取记錄形成的回訪习惯。入口頁如果不在這些来源里的任何一個,它對新訪客来说就等于不存在。所以当發現“目标 URL 很久没被抓”时,第一步不是繼續加連結,而是先確認入口頁本身有没有被抓取记錄。
入口頁常见的發現途径
站点地图與歷史抓取
把入口頁放進 sitemap,是最直接的方式,前提是 sitemap 本身可訪問、格式正确,且里面的 URL 返回正常狀態碼。如果入口頁曾经被抓取過,後續被回訪的概率會明顯提高,這也是為什么老域名下的入口頁通常比全新站点的入口頁更容易维持抓取节奏。
外部連結與站内連結
一個可被爬取的連結,往往比任何提交都更稳定。入口頁如果能從其它已被抓取的頁面获得連結,就相当于有了持續的引路。相反,孤立的入口頁即使内容正常,被發現的速度也會慢很多。
主動提交
各搜尋引擎都提供了 URL 提交入口,可以在入口頁更新後主動提交一次。注意提交只是提示,不保證抓取時間,更不保證收錄,把它当作加速线索而不是開關更合适。
入口頁没被抓到时,目标 URL 還有机會吗
- 如果目标 URL 同时出現在 sitemap 或其它已被抓取的頁面上,它仍可能被獨立發現;
- 如果目标 URL 只有入口頁這一條路径,那么入口頁不被抓,它基本就没有被發現的机會;
- 如果入口頁被抓過,但目标連結要等脚本执行後才出現,能否被發現取决于搜尋引擎的渲染能力,稳定性不如静態 HTML 連結。
這也是多路径冗余的價值:同一個目标 URL 通過站点地图、入口頁連結等不同方式暴露,某一條路径失效时不會直接断档。
自查顺序建议
- 看服務器日誌,確認入口頁最近一次被抓取的時間;如果完全没有记錄,先解决入口頁的發現問题。
- 確認入口頁返回 200,没有 robots.txt 拦截,也没有會干扰抓取的指令。
- 检查入口頁是否有可抓取的入站連結,必要时补充站内或站外連結。
- 把入口頁寫入 sitemap,並確認 sitemap 能被正常訪問。
- 观察一段時間後,再看目标 URL 是否開始出現在日誌里,再决定是否調整連結结构。
入口頁不被抓,往往不是“蜘蛛池质量差”,而是它缺少被抓的理由。先把入口頁送進抓取队列,再谈目标 URL 的發現效率。
小结
入口頁是目标 URL 被發現的一條通道,但它本身也需要通道。把入口頁的可發現性、可訪問性和連結来源這三件事確認清楚,比不断堆連結更能解释“為什么没被抓”這個問题。