搜尋抓取

蜘蛛從列表頁走到詳情頁:分頁、加载更多與篩選參數的抓取路径

列表頁是詳情頁最主要的抓取入口,分頁連結怎么寫、加载更多是否产生新 URL、篩選與排序參數是否發散,都會影响蜘蛛能否顺着列表走到詳情頁。本文整理分頁路径的常见卡点、篩選頁的取舍思路,以及用日誌驗證路径是否通畅的方法。

搜尋抓取

蜘蛛從列表頁走到詳情頁:分頁、加载更多與篩選參數的抓取路径

大多數站点的詳情頁不是靠首頁直接连出去的,而是靠一层层列表頁带着蜘蛛走到。列表頁的翻頁、加载更多、篩選和排序,决定了蜘蛛在有限的抓取次數里能摸到多少詳情頁。路径铺得好,新内容上线後被發現的节奏會顺一些;铺得不好,蜘蛛可能翻两頁就离開,後面几百條内容一直等着。

分頁連結用哪種形式,蜘蛛更容易跟

分頁是列表頁最基础的導航,常见的几種寫法對抓取的影响並不一样。

  • 獨立路径分頁:形如 /list/2/、/list/3/ 的地址,每個頁碼都是可抓取的獨立 URL,蜘蛛顺着“下一頁”連結能一路往後走,是目前最省事的形式。
  • 參數分頁:形如 /list?page=2 的地址同样可以被抓取,但要注意別让排序、来源追踪等參數混進来,否則同一頁會出現多個版本。
  • 按钮式加载更多:如果“加载更多”只是用 JavaScript 追加内容、不产生新的 URL,蜘蛛通常不會繼續往下点,它看到的列表長度就等于第一屏。
  • 無限滚動:問题類似,滚動到底部才追加内容,而蜘蛛不會滚動。建议同时给出一组静態分頁連結兜底。

分頁常见的几個卡点

  • 把第 2 頁之後的連結统一加了 nofollow,等于把列表的下半段封了起来。
  • 分頁用 JavaScript 跳轉而不是真實的 a 标簽 href,蜘蛛未必會执行。
  • 頁碼深到几十上百頁後内容重复度高、更新少,蜘蛛自然减少訪問。
  • “下一頁”指向的 URL 每次带一串随机參數,翻頁變成一堆新地址。

篩選與排序參數:抓取浪費的主要来源

篩選條件一多,组合出来的 URL 會成倍增長。颜色、尺碼、價格区間、排序方式各自相乘,很容易出現几千個只有细微差別的列表頁。蜘蛛會把這些地址都当成新頁面去發現,抓取被大量消耗在几乎相同的内容上,真正需要更新的詳情頁反而排到後面。

處理思路通常是分档,而不是一刀切:

  1. 保留少量有搜尋需求、能带来實际訪問的篩選组合,给它們稳定的 URL,並寫好頁面标题和描述。
  2. 其余组合让頁面預設不輸出可点击連結,或统一指向一個規范地址,避免蜘蛛顺着參數一路發散。
  3. 確認某類參數頁确實不需要被抓取後,再用 robots.txt 或 robots meta 拦截。注意拦截的是“不抓取”,不等于“不索引”,两者要分清楚。
  4. 排序參數一般只保留一個預設顺序给蜘蛛,其余顺序不輸出連結。

让翻頁路径更顺的几件事

  • 每頁都放“上一頁 / 下一頁”,並且是真實的 a 标簽連結。
  • 分頁 URL 保持規則、可预测,頁碼不要寫成無意义的随机串。
  • 列表里的每一條都直接指向詳情頁,別让人和蜘蛛再点两层才到内容。
  • 把最新、最重要的内容排在前面,蜘蛛翻前几頁时就能拿到。
  • 列表頁本身要有一定更新频率,長期不動的頁碼抓取優先級會下降。

Sitemap 作為补充入口

分頁連結是蜘蛛在站内自然行走的路线,Sitemap 則是直接递上一份清單。两者不冲突:列表頁负责日常更新和關联發現,Sitemap 适合放那些不容易從首頁翻到的詳情頁,以及新上线的一批内容。分頁地址本身通常不必全部放進 Sitemap,但第一頁和几個主要入口值得收錄其中。

用日誌看路径是否真的走通

判断路径有没有铺好,光看頁面不够,還得看蜘蛛實际怎么走。

  • 看列表頁被訪問後,蜘蛛下一步是跳到詳情頁,還是直接离開。
  • 看詳情頁日誌里来源是列表頁、Sitemap 還是別的入口。
  • 看哪些頁碼長期没被訪問過,判断是連結断了,還是抓取優先級被压低。
列表頁的價值不在于頁數多,而在于每一頁都能把蜘蛛带向一组新的、值得抓的詳情頁。