搜索抓取

参数组合生出的 URL:蜘蛛会抓走多少份列表页

列表页加上排序、筛选、分页和追踪参数后,会组合出大量地址,蜘蛛会把它们当成一个个独立 URL 抓取,占掉本来可以留给内容页的抓取额度。本文说明哪些参数最容易失控,以及用 robots.txt、canonical、内链口径和 Sitemap 收口的做法,并给出判断哪些参数页值得保留的检查步骤。

搜索抓取

参数组合生出的 URL:蜘蛛会抓走多少份列表页

带参数的 URL 本身没有错,麻烦在于它会成倍出现。一个列表页加上排序、筛选、分页、来源追踪之后,可以组合出几十甚至上百个地址,而蜘蛛对每一个地址都会当成独立 URL 来处理,消耗的抓取次数也跟着翻上去。

蜘蛛看到的是 URL,不是页面逻辑

对服务器来说,/list?color=red 和 /list?color=blue 是两次不同的请求;对蜘蛛来说也是两个独立地址。如果你用参数把同一批商品重新排列组合,蜘蛛会顺着内链或 Sitemap 一路展开,把这些组合逐个抓一遍。结果往往是:真正需要更新的详情页没被抓几次,组合出来的列表页却占掉了大头。

哪些参数最容易让抓取量失控

  • 排序参数:?sort=price、?order=desc,同一批内容换个顺序就多一个地址。
  • 多条件筛选:?color=red&size=40&brand=x,条件越多,组合增长越快。
  • 分页叠加筛选:筛选结果后面再带 page=2,地址数量又乘一层。
  • 追踪与来源参数:?from=home、utm_source 这类对内容没有影响,却会生成新地址。
  • 会话与临时参数:带 sessionid、时间戳的地址,每次抓到的写法都不一样。

几种常见的收口方式

用 robots.txt 挡住

对确认没有收录价值、纯粹由筛选组合出来的地址,可以用 Disallow 规则拦住。要注意 robots.txt 管的是抓取,不是收录,已经进过索引的地址需要另外处理。

统一 canonical 与内链口径

把参数页的 canonical 指回不带参数的规范版本,同时让站内链接尽量只用规范写法。内链是蜘蛛最常走的路径,链接怎么写,它就更可能怎么抓。

让参数页可用,但不必处处可达

筛选结果可以由前端 JS 生成,或者通过提交、接口拉取,避免为每一种组合都生成一个能被直接抓取的静态地址。用户照样能用,蜘蛛也不需要顺着链接全部展开。

Sitemap 里只放主干

Sitemap 是主动递出去的清单,把参数组合也写进去,等于邀请蜘蛛逐个访问。主干列表页和重要详情页放进去即可。

怎么判断哪些参数页值得保留

  1. 看服务器日志或站长平台的抓取统计,找出被抓次数最多的一批参数地址。
  2. 确认这些地址有没有带来实际访问或转化,没有的话基本属于纯消耗。
  3. 看看是否有重要页面因为抓取额度被占用而更新滞后。
  4. 定好规范地址口径,再决定是屏蔽、合并还是保留。
参数本身不是问题,无人管理的参数组合才是。把口径定下来,抓取路径才会更集中。

一个容易忽略的细节

屏蔽参数地址之后,要回头确认站内链接和 Sitemap 里没有继续出现这些写法,否则蜘蛛会在能发现却抓不了的状态里反复试探。规则调整后观察一段时间的日志,看抓取分布有没有向内容页倾斜,再决定要不要继续收紧。