整理蜘蛛池入口頁时,经常會遇到這样的细节:同一個目标 URL 在頁面里出現了三四次——導航里一次、正文里一次、頁脚里又一次。于是問题来了:搜尋蜘蛛會不會把每一次出現都当成一次發現,從而重复抓取,白白消耗抓取額度?
同一個 URL 在一頁里出現多次,通常只會被抓一次
主流搜尋引擎在解析 HTML 时,會先把頁面里提取到的連結放進一個待抓取队列,並做基本去重。也就是说,同一張入口頁里出現多次的同一個 URL,通常只會形成一條抓取任務,不會因為你寫了五遍就抓五遍。
不過這個去重是以搜尋引擎認為的同一個 URL 為准。字符串完全一致的 href,一般會被合並;而只是看起来像同一個頁面的不同寫法,很可能被認為是不相同的 URL。
容易被当成不同 URL 的几種寫法
- 大小寫不同:/Page 和 /page
- 带不带 www:example.com 和 www.example.com
- 结尾有没有斜杠:/a 和 /a/
- http 與 https 混用
- 带跟踪參數:?from=footer 與不带參數
- 锚点不同:#top 與 #faq(多數情况下锚点會被忽略,但寫法混乱不利于排查)
锚文本不同會影响去重吗
一般不會。搜尋引擎做的是 URL 层面的去重,同一 URL 配不同锚文本出現多次,仍只會形成一條待抓取记錄。不過锚文本對理解目标頁面主题有一定帮助,所以關键位置用描述性文字仍然值得做。
那重复連結是不是就不用管了?
不完全是。重复連結通常不會带来惩罚,但會带来一些實际麻烦:
- 浪費頁面体积:入口頁本来是给蜘蛛看連結的,重复内容多了,真正需要被發現的目标 URL 就被挤到後面。
- 日誌难讀:日誌里同一路径反复出現,會让你誤判蜘蛛的實际抓取范围。
- 信号被稀释:同頁多個不同寫法指向同一内容,容易让搜尋引擎在 URL 規范化上做出與你预期不一致的選擇。
排查和整理的做法
- 先把入口頁里所有 href 抓下来,做一次纯字符串去重,看看去重前後的數量差多少。
- 再按上面的規則做一次規范化:统一协议、统一 www、统一结尾斜杠、去掉無意义跟踪參數,然後再比對一次。
- 確認入口頁連結總量是否合理。一個頁面塞几百上千條連結,單頁能被有效處理的比例通常會下降,不如拆成多個入口頁。
- 把規范化後的 URL 同步到 sitemap,让發現路径更清晰,而不是靠入口頁反复堆砌。
- 過一段時間用日誌驗證:看蜘蛛實际抓了哪些 URL,與你放進去的是否一致。
需要提醒的是,去重是搜尋引擎的常規處理,不是可以利用的技巧。同一個 URL 多寫几遍不會提高被抓取的概率,也不代表能被收錄。
小结
同一入口頁里重复出現的目标 URL,通常不會被重复抓取,所以不必為多寫了几遍担心;但重复、寫法混乱的連結會让頁面效率變低、日誌變难讀。把連結做規范化、控制單頁數量、配合 sitemap 使用,才是更稳妥的做法。