搜尋抓取

被抓取不等于被收錄:蜘蛛走過 URL 之後還發生了什么

蜘蛛来過、日誌里有记錄,頁面却始终没有收錄,這類問题常被誤判成抓取不够。本文把抓取、索引、展示拆成三個环节,說明頁面被抓取之後還要经過渲染、規范化與质量判断,並列出抓了不收錄的常见原因和几項可落地的站点自查方法。

搜尋抓取

被抓取不等于被收錄:蜘蛛走過 URL 之後還發生了什么

很多站点把“蜘蛛来過”当成好消息,但日誌里出現抓取记錄,只說明搜尋引擎把那個 URL 取回去了,並不代表它會被建立索引、出現在结果里。把這两件事分開看,排查問题时才不會找错方向。

抓取、索引、展示是三件事

抓取是搜尋引擎把頁面内容下载回来,這一步解决的是“能不能拿到”。索引是對拿到的内容做處理、判断有没有必要存進索引库,解决的是“值不值得收”。展示則要再结合查询词和排序,解决的是“什么时候拿出来”。三個环节各有取舍,抓取顺畅不等于後面两步自動通過。

頁面被抓取之後,通常要過這几道關

  1. 解析與渲染。普通 HTML 直接解析;依赖 JavaScript 才能生成内容的頁面會被放進渲染队列排队。队列有先後,渲染完成前蜘蛛拿到的首屏往往是空壳。
  2. 規范化與去重。多個 URL 指向同一份内容时,搜尋引擎會挑一個作為代表,其余地址的處理方式可能是合並。這里面包含參數、大小寫、结尾斜杠、canonical 声明等因素。
  3. 内容质量判断。頁面是否有獨立信息、是否與站内其他頁面高度雷同、是否只是模板加几行文字,都會影响是否建立索引。
  4. 索引後的更新。已收錄頁面在内容變化後可能被重新處理,也可能维持原样,取决于改動幅度和後續回訪结果。

抓了却不收錄,常见原因在這几處

  • 頁面返回 200,但正文是“暂無内容”、报错提示或空白模板;
  • 正文主要靠 JS 渲染,蜘蛛拿到的那份 HTML 里没有可用文字;
  • 頁面自己寫了 noindex,被抓取属于正常現象,被排除也是预期结果;
  • canonical、hreflang 或分頁關系指向別的 URL,目前地址被当作副本;
  • 站内多個 URL 内容几乎一致,只有排序、来源等少量差异,被合並成一條;
  • 頁面只承担跳轉或收集外鏈的作用,缺少能獨立成立的内容。

這些原因大多和“蜘蛛有没有来”無關。抓取量涨了、日誌里 URL 變多了,頁面本身仍可能落在索引之外。

站点可以做的几項自查

把抓取資料和索引資料對照着看

從服務器日誌或搜尋平台的抓取統計里筛出被訪問的 URL,再和已收錄的 URL 做一次比對。差异集中的目錄或模板,往往就是問题所在,比逐頁猜测省事得多。

確認同一 URL 在不同环境下返回一致

  • 带與不带 www、http 與 https、移動版與桌面版,是否返回同一份内容;
  • 登入態與未登入態下,蜘蛛看到的是不是同一批文字;
  • 地区、語言或用戶代理不同时,是否出現内容替換。

检查首屏 HTML 里有没有正文

關掉 JavaScript,或用“查看源代碼”看原始 HTML。如果文字全都不在,蜘蛛想拿到内容就得等渲染队列,能不能排到、什么时候排到都不由站点决定。把關键内容放進初始 HTML,通常比事後补提交更有效。

別把抓取量本身当成目标

抓取次數是過程指标。同一批 URL 被反复抓、新 URL 却迟迟不進队列,說明抓取资源花在了产出有限的地方。這时可以收一收:把參數化地址、無内容入口、重复列表頁通過 robots 或連結策略收敛掉,让蜘蛛把時間用在真正需要被處理的頁面上。

至于各類“蜘蛛池”入口堆量,能带来更多抓取請求,但改變不了頁面是否值得建索引這件事。入口再多,内容這一關過不了,结果還是一样。

抓取解决“拿到”,索引解决“值不值得收”。排查問题时先把這两件事分開,再去看路径、狀態碼和内容本身。