很多人把注意力放在入口頁數量和投喂量上,却忽略了一個更靠前的問题:被投喂的 URL 本身長什么样。同一批内容,換成不同的 URL 结构,蜘蛛在解析、去重和排優先級时的结果可能完全不同。URL 结构不是装饰,它直接影响爬虫愿不愿意繼續往下走。
為什么 URL 结构會影响發現效率
爬虫拿到一個地址後,會先做几件事:判断格式是否合法、是否與已知 URL 重复、是否在同一主域下、层級是否過深。這些判断大多只看字符串,不看頁面内容。所以一個看起来只是寫法不同的地址,可能直接被归一化掉,或者被判定為低優先級,排在队尾很久也轮不到。
目錄层級:够用就行
目錄越深,蜘蛛從入口頁到達目标頁需要经過的跳轉越多,中間任何一环没抓到,後面的路径就断了。一般建议入口頁到目标頁控制在三跳以内,目錄层級尽量不超過四級。
几種常见排布
- 扁平式:/a/123.html,层級浅,适合量大、结构單一的目标頁。
- 分组式:/news/2024/05/123.html,便于人工管理,但要確認入口頁能覆盖到中間层。
- 混合式:栏目頁扁平、詳情頁带日期,兼顾可讀性與维護成本。
层級本身没有绝對好坏,關键是入口頁里能不能给出通向每一层的連結,別让中間层變成没有入口的孤岛。
參數:能去就去的部分
带參數的地址通常有三種下场:被归一化、被当成新地址重复抓取、或者因為動態特征明顯而降低優先級。
- 跟踪參數(utm、from、spm 之類):對内容没有意义,建议在生成投喂列表时就剔除。
- 分頁參數:page=2、page=3 是有意义的,但入口頁要有明确的翻頁連結,別指望蜘蛛自己猜出来。
- 篩選與排序參數:容易组合出大量近似地址,投喂前最好只保留少數几個固定组合。
如果确實需要參數,尽量把關键參數放進路径里,让它看起来像一個稳定的资源地址,而不是一次性的查询结果。
静態化與伪静態
静態地址(.html 结尾或纯路径)在歷史上對抓取更友好,但今天更關键的是頁面能否稳定返回、是否存在重复、有没有被入口頁連結到。伪静態只是把參數藏起来,如果底层仍然會生成大量近似頁面,問题依舊存在。
判断标准可以很朴素:同一個頁面内容,是否只有一個稳定地址能打開,並且這個地址在入口頁里出現過。
入口頁里的連結怎么寫
URL 结构定下来之後,還要看它在入口頁里的呈現方式。纯文本地址、可点击連結、带锚文本的連結,被發現和被跟随的概率並不相同。同一批目标地址,建议在入口頁用可点击的 a 标簽輸出,锚文本尽量與目标頁主题相關,避免清一色寫“点击這里”。
落地时的几條建议
- 先定 URL 規則,再批量生成,不要邊生成邊改規則。
- 投喂前做一次去重與存活檢測,把带冗余參數的地址清掉。
- 入口頁到目标頁的路径固定下来,减少随机跳轉。
- 同一批 URL 的结构保持一致,方便後續從日誌里對比效果。
- 規則調整後留出观察期,隔几天再看日誌變化,不要当天就下结论。
URL 结构解决的是“蜘蛛能不能顺畅找到並区分這些地址”的問题,它不保證收錄,也不保證排名。把结构做干净,只是把後面那些环节的门槛降下来,真正决定结果的仍然是内容本身與站点整体质量。