站点运营

站点运营:篩選與排序參數自查,別让组合地址拖走抓取

列表頁的篩選、排序、追踪參數容易生成大量组合地址,其中不少指向同一批内容,却會持續消耗抓取。這篇文章讲怎么先從日誌判断影响范围,再按參數類型分流處理,以及新增篩選功能前该確認的几件事。

站点运营

站点运营:篩選與排序參數自查,別让组合地址拖走抓取

列表頁加上篩選,是很常见的功能。但對蜘蛛来说,每多一個篩選维度,就多出一批地址。颜色、尺碼、價格区間、排序方式,看上去只是几個下拉框,组合起来却可能是几百上千個 URL,而這些地址背後的内容,往往只是同一批條目的不同排列。

參數為什么容易失控

問题通常出在两個地方。一是篩選狀態直接寫進地址,用戶每点一次就生成一個新 URL;二是没有預設值归一,比如按價格升序和按價格降序是两個地址,但呈現的内容几乎一样。蜘蛛顺着連結一路点下去,就會在這些组合地址上花掉大量時間。

更麻烦的是,這些頁面往往還自带分頁。篩選加翻頁,地址數量會再乘一层。

先把參數分成三類

篩選參數

决定頁面展示哪些條目,比如 ?color=red。這類參數确實會产生不同的列表,但组合數量最多,也最容易失控。

排序與视图參數

只改變展示顺序或样式,比如 ?sort=price?view=list。内容基本一致,重复度最高,通常不值得單獨被抓取。

追踪與来源參數

渠道标记之類的參數,比如 utm 系列。這類參數對頁面内容没有影响,只用于統計来源,站内連結里带它們,就會凭空多出一批地址。

先看日誌,再定策略

動手之前,先確認蜘蛛到底抓了多少带參數的地址。從服務器日誌里筛出含問号的請求,看几個指标:

  • 带參數地址占全部抓取請求的比例;
  • 這些請求返回的是 200,還是被跳轉到別處;
  • 抓取是否集中在少數几個參數组合上。

如果比例很高,而且大部分是排序、视图這類没有實质差异的地址,那就值得處理;如果带參地址占比很低,先把精力放在更明顯的問题上更划算。

几種常见的處理办法

不同參數适合不同手段,混着用容易出問题。

  1. 排序與视图參數做归一。預設排序不带參數,其他排序通過跳轉或 canonical 指回預設版本,避免多個地址各自為政。
  2. 篩選參數区分對待。有一定点击、内容确實不同的组合可以保留;冷门组合可以限制站内連結的暴露,减少蜘蛛顺着爬進去的机會。
  3. 追踪參數不進站内連結。站内跳轉不要带上渠道标记,否則同一頁面會在站内以多個带參形式出現。
  4. robots.txt 屏蔽要谨慎。被屏蔽的地址如果還有外部連結,蜘蛛仍可能尝试抓取,只是拿不到内容,判断起来更麻烦。屏蔽解决的是抓取,不是重复内容本身。
參數頁面的處理没有统一答案。先看這批地址有没有真實的搜尋需求,再看维護成本。為了几個没人搜的组合地址寫一堆規則,往往是白費力气。

新增篩選功能前先想一步

很多參數問题是在功能上线之後才發現的。比較省事的做法是,在提需求时多問一句:這個篩選會不會生成新地址,預設狀態是什么,需不需要被搜尋到。答案清楚了,技術侧才好决定用哪種寫法。

已经上线的站点,可以按栏目分批梳理,先處理量最大、重复度最高的那几類。梳理的结果记到文档里,下次加功能时翻出来對一遍,比临时救火省事得多。

维護节奏

處理之後不用天天盯,隔一段時間抽查一次即可:看日誌里带參數請求的比例有没有回升,看新上线的篩選有没有按约定處理。參數這類問题很少一次解决完,它會随着功能迭代反复出現,留一個简單的检查习惯,比做一次大掃除更實际。