聊 URL 發現时,sitemap 提交和蜘蛛池入口頁经常被放在一起比較。但它們的定位並不相同:sitemap 是站点主動向搜尋引擎声明“我這里有哪些地址”,属于提交;蜘蛛池入口頁是通過一批可被抓取的頁面,挂上指向目标 URL 的連結,属于引導爬虫顺着連結走。一個是声明,一個是路径,混着看容易把因果關系搞反。
两者分別解决什么問题
sitemap 的作用范围基本限定在你自己能驗證控制權的域名内。它的價值在于:让爬虫不必靠猜就知道站点里存在哪些頁面,尤其是入口浅、内鏈少、平时很难被点到的深层頁。它解决的是“站内 URL 的可见性”。
蜘蛛池入口頁解决的是另一件事:把一條不在你站点结构里的目标 URL,通過外部頁面的超連結暴露出去。爬虫抓取入口頁时解析頁面上的連結,從而知道目标 URL 的存在。它解决的是“跨域、跨站的發現”。
所以当有人問“哪個更有效”,更准确的说法是:先看你缺的是声明,還是缺的是路径。
各自更适合的场景
sitemap 更有用的情况
- 目标 URL 位于你自己能驗證的域名下;
- 頁面數量多、内鏈结构乱、深层頁面很难被逐层点開;
- 希望爬虫重新抓取已存在但内容有更新的頁面;
- 需要在 sitemap 里带上 lastmod 一類的時間信息,辅助判断更新。
蜘蛛池入口頁更有用的情况
- 目标 URL 不在你能提交 sitemap 的站点里;
- 希望通過外部連結增加一條被發現的可能性;
- 目标頁自身站内入口极少,需要外部連結做补充引導。
两者並不冲突。正常的抓取路径里,爬虫既可能讀過 sitemap,也可能顺着連結一路走過来。非要二選一,通常是把它当成了開關。
几個常见的理解偏差
- 把 sitemap 当成收錄保證。提交只是告知存在這些地址,抓不抓、收不收由搜尋引擎自行判断,sitemap 决定不了结果。
- 以為入口頁越多,發現就越快。入口頁内容高度重复、质量差,爬虫的抓取意愿會下降,頁面上的連結被解析的机會也跟着變少。
- 忽略可抓取性。入口頁被 robots.txt 挡住、返回 5xx,或者連結寫在 JS、图片里,都會让“連結存在”和“連結被發現”變成两回事。
- 目标頁自己挡住了入口。目标 URL 带 noindex、被 robots.txt 屏蔽、需要登入才能訪問,入口頁挂再多連結也不會有後續動作。
怎么判断哪一步没生效
與其纠结哪種方式更强,不如按顺序看日誌:
- 先確認服務器日誌里有没有搜尋蜘蛛的 UA 訪問過入口頁,返回碼是多少;
- 再看同一時間段有没有针對目标 URL 的請求,UA 是否一致;
- 如果入口頁被抓了、目标 URL 没被抓,检查連結是否是可解析的 a 标簽,目标地址是否可達;
- 如果目标 URL 已经被抓,問题就不在發現环节,要回到頁面内容與质量本身去找。
發現、抓取、收錄是三件事。sitemap 和入口頁連結都只作用在第一步,後面的步骤得靠目标頁面自己满足條件。
實操上的顺序建议是:自有站点的 URL,先把 sitemap、内鏈和可訪問性整理清楚,能覆盖的就不必绕遠路;确實需要外部引導的 URL,再把入口頁当作补充手段。不要把所有希望押在某一種方式上,也不要把两種方式的效果混在同一個指标里統計。