做蜘蛛池入口頁时,很多人把精力都放在内容和連結上,忽略了 URL 本身。事實上 URL 是蜘蛛抓到一個頁面时最先讀到的信息,它既要能唯一标识頁面,也要能让人和机器看出這頁大概在什么位置。结构没理顺,後面铺得越多越乱。
URL 的两個基本职责:去重與定位
第一是去重。同一個頁面如果存在多個可訪問地址,比如带 www 和不带 www、带尾斜杠和不带尾斜杠、參數顺序不同,蜘蛛會当成多個頁面處理,抓取額度被分摊,頁面之間的關系也會變模糊。
第二是定位。目錄结构能表達頁面之間的归属關系,蜘蛛顺着目錄和連結往下走时,更容易判断哪些頁面属于同一批,哪些是相對獨立的内容。
层級:尽量控制在三到四层以内
入口頁不需要太深的目錄。像四层往上的结构,一方面书寫和核對成本高,另一方面批量管理时很容易出错。比較實用的做法是把同類入口頁放在同一层目錄下,用文件名区分,例如用统一的前缀加流水号命名。
規則化命名的好處是肉眼就能看出這一批頁面是不是同批次,出問题时方便定位,也方便批量替換。
參數:能静態化就静態化
動態參數本身不是問题,問题是參數太多太乱。常见的三種情况:
- 排序與篩選參數:同一批資料因為 sort、order、page 不同生成大量 URL,内容高度相似。
- 跟踪參數:utm、from、ref 之類,對頁面内容没有影响,却會生成新的地址。
- 無意义參數:僅用于程序内部传递、對訪問者没有任何意义的键值對。
處理原則很简單:不影响頁面内容的參數,最好不出現在連結里。如果确實需要,尽量固定顺序、精简數量,並考虑用 canonical 指向不带參數的主版本。
大小寫、结尾斜杠與扩展名
這三件小事经常被忽略,但會直接制造重复地址:
- 大小寫:同一路径的大小寫形式在多數服務器上是两個地址。统一用小寫是最省事的做法。
- 尾斜杠:带斜杠和不带斜杠要统一,選一種並全站保持一致。
- 扩展名:.html、.htm、無扩展名不要混用,同一批入口頁统一一種風格。
命名:纯數字、纯字母還是拼音
三種寫法各有取舍。纯數字 ID 最短、最容易批量生成,但對人没有含义;拼音或英文 slug 可讀性好,但要注意別堆關鍵詞,也別寫得太長。折中的做法是流水号加一段简短标识,既能唯一定位,也不至于完全看不懂。
URL 里堆砌關鍵詞並不會带来額外好處,反而容易让整批頁面看起来像是同一個模板批量複製出来的。
中文與特殊字符要不要出現
URL 里出現中文會被轉义成一長串百分号编碼,既不好讀,也容易在複製粘贴时出错。入口頁這類需要批量處理的頁面,建议只用小寫字母、數字和连字符,把中文字符留给頁面标题和正文。
批量铺頁时的几條建议
- 先定好命名規則再開始批量生成,避免中途改規則導致新舊地址混在一起。
- 每一批入口頁的 URL 規則保持一致,方便後續用訪問日誌核對哪些被抓過、哪些没被抓過。
- 预留扩展空間,例如把批次号單獨占一段,後續加量时不用推翻已有结构。
- 生成完先跑一遍站内工具或爬虫,检查有没有重复地址和死鏈。
上线前的检查顺序
先把 URL 規則定下来,再確認每一類地址都能正常訪問、返回碼正确,最後才谈投放和观察抓取情况。顺序颠倒的话,等發現大量重复地址时,前面的工作基本要重做一遍。