搜尋抓取

子资源抓取:蜘蛛取走 HTML 之後還會下载什么

蜘蛛抓取並不止于 HTML 主文档,頁面依赖的 CSS、JavaScript、图片等子资源同样可能被取走。本文說明這些资源為什么影响蜘蛛看到的頁面、被屏蔽後會出什么問题,以及服務器侧的准备事項和一份自查清單。

搜尋抓取

子资源抓取:蜘蛛取走 HTML 之後還會下载什么

谈到抓取,很多人脑子里只有一個動作:蜘蛛来拿一個 HTML 文件。實际上,搜尋引擎的抓取器除了主文档,還會按需取走頁面依赖的 CSS、JavaScript、图片等文件。這些子资源不進正文,却直接影响蜘蛛對頁面的理解。

為什么蜘蛛要抓子资源

主要有两個原因。一是渲染:現在大量頁面靠 JS 拼装内容,蜘蛛要执行脚本、應用样式,才能看到和用戶差不多的頁面,這一步必须先下载對應的 JS 與 CSS。二是资源索引:图片、视频封面這類文件本身也會由單獨的抓取流程處理,用于图片搜尋等场景。

換句话说,主文档只是入口,子资源决定蜘蛛最终“看到”的是什么。

常见會被抓取的子资源

  • CSS:影响渲染结果,也用于判断首屏可见内容。
  • JavaScript:决定内容是否被插入、連結是否生成。
  • 图片與视频封面:主站抓取之外的獨立抓取通道。
  • 字体、图标等静態文件:通常随样式一起被請求。
  • 接口資料:頁面脚本發起的同域請求,渲染时可能被触發。

不同引擎的取舍不一样,不必逐個猜测,但要把它們当成“可能被訪問的 URL”来看待。

子资源被挡住會怎样

最常见的問题是 robots.txt 里為了“省资源”,把 /js/、/css/、/static/ 整目錄封掉。结果是蜘蛛拿不到渲染所需的文件,看到的可能只是一個空白框架。内容、連結都看不全,後續的抓取安排自然會受影响。

如果确實要限制某些目錄,先確認這些文件不是頁面正常渲染的依赖,再動 robots.txt。

服務器侧要做的事

  • 静態资源目錄保持稳定,不要频繁改路径,否則舊連結會持續返回 404。
  • 给 CSS、JS、图片設定合理的缓存头,减少重复請求带来的回源压力。
  • 開啟压缩,控制單文件体积,抓取和加载都更省時間。
  • 限流策略要区分頁面與静態资源,避免把正常资源請求当成異常流量誤封。
  • CDN 回源路径要通,蜘蛛拿到 5xx 时不會替你判断“這只是缓存配置問题”。

子资源也占抓取份額

抓取是有額度概念的:同一段時間里,蜘蛛能取多少 URL 是有限的。一個頁面依赖几十個脚本和样式文件,主文档只算一條,剩下的都在消耗額度。所以精简第三方脚本、合並無谓的請求,不只是前端性能問题,也和抓取效率有關。

一份快速自查清單

  1. 用抓取工具或服務器日誌看一次頁面加载,列出實际被請求的资源。
  2. 確認 robots.txt 没有拦住渲染必需的目錄。
  3. 检查這些资源返回的狀態碼,404 和 5xx 都要清掉。
  4. 看静態资源有没有稳定的 URL 規則和缓存头。
  5. 评估頁面脚本數量,砍掉不參與内容呈現的部分。

把這些做完,蜘蛛對頁面的還原度會更高一些。它是否收錄、如何排序,仍由整体质量决定,子资源只是其中一环。