站内搜尋頁和篩選组合,是抓取里很典型的一類“看起来有用、實际很耗”的入口。它們通常即时生成、返回 200、内容随參數變化,但彼此差异很小。蜘蛛一旦走進去,往往會沿着參數组合一路展開。
為什么這類入口容易被反复抓
- 每個參數组合都是一個獨立 URL,蜘蛛没法從地址上判断它有没有價值;
- 頁面返回 200 且正文有内容,不會触發软 404 那類過滤;
- 结果頁里往往又連結着詳情頁,蜘蛛會顺着繼續走,形成“入口到结果頁、到詳情頁、再回结果頁”的循环;
- 排序、每頁數量、時間范围這類參數,只是同一批内容換了個顺序。
先分清三類動態入口
站内搜尋
關鍵詞由用戶輸入,理论组合無限。這類頁面一般不建议被抓取,也不适合被收錄。
篩選與排序
分類、價格区間、品牌、排序方式。其中一部分组合确實對應真實搜尋需求,例如“某品類加某品牌”,可以考虑保留少量内容足够的固定组合,其余收口。
日歷與時間參數
按年月日翻档的頁面容易产生大量空白结果,需要限制可抓范围,或只保留确實有内容的月份。
常见的收口方式與取舍
- robots.txt 屏蔽參數路径:见效快,但被屏蔽的 URL 無法被抓取,頁面上的 noindex 也就讀不到。如果這個地址已经被外鏈指向,仍可能出現,只是缺少描述。
- 頁面加 noindex:适合希望“可抓但不想收錄”的搜尋頁。要注意 noindex 得能被讀到,頁面就不能同时被 robots 屏蔽。
- canonical 指向主列表頁:适合篩選结果與主列表内容高度重合的情况,有助于合並信号,但不能替代内容质量判断。
- 减少内鏈入口:很多參數頁是被站内連結“喂”出来的。把篩選連結改成点击後才加载,或只在有限场景出現,往往比事後补救更省事。
- 分頁單獨處理:正常的列表分頁是抓取路径的一部分,不宜一刀切屏蔽,真正要限制的是分頁上叠加的參數组合。
robots.txt 挡的是抓取,不是收錄。想控制收錄,通常還是要让頁面能被抓到,再给出 noindex 或規范連結。
怎么驗證收口有没有效果
- 看抓取日誌里带參數 URL 的請求占比,收口前後做對比;
- 用站内搜尋或頁面查询,检查還有多少结果頁被收錄;
- 检查 Sitemap 是否混進了带參數的地址;
- 观察主列表頁與深层詳情頁的抓取频次有没有變化。
收口的目标不是把動態頁面全部封掉,而是让蜘蛛把有限的抓取次數花在有差异的内容上。哪些组合值得留、哪些只是換個顺序,需要结合站内真實搜尋需求和日誌資料判断;調整之後也要留一段時間观察,別指望一次改動就立刻见效。