提到抓取,很多人第一反應是頁面和連結。但蜘蛛實际下载的资源里,還包括图片、PDF、Office 文档、视频封面等非 HTML 文件。這些资源如果處理不当,要么被抓成空連結,要么反复占用抓取額度,要么在图片搜尋里留下失效入口。
為什么非 HTML 资源也值得管
图片和附件通常和頁面一起被抓,數量往往比頁面還多。一個列表頁如果有 30 張缩略图,蜘蛛除了抓頁面本身,還會顺带請求這些图片地址。如果其中一部分是 404、是占位图、或者需要登入才能訪問,那么這些請求就是白跑的。
另外,图片和附件的索引入口和普通頁面不完全一样。图片可能出現在图片搜尋,PDF 可能被單獨收錄。這些入口一旦失效,用戶点進来看到的是错誤頁,而不是你的内容。
几類常见問题
懒加载與占位图
為了加快首屏,很多站点會用懒加载。做法通常是把真實地址放在 data-src 之類的属性里,src 先指向一張占位图。如果脚本没有在蜘蛛渲染时执行,或者执行得太晚,蜘蛛拿到的就是占位图。结果是每張图片看起来都一样,且没有有效内容。
自查方法:用抓取工具查看渲染後的 HTML,確認图片地址已经就位;或者對首屏图片直接輸出真實 src,把懒加载留给下方内容。
缩略图與原图的關系
列表頁用的是压缩缩略图,詳情頁才是原图。如果缩略图地址和原图地址不同,且缩略图外面没有指向詳情頁的連結,蜘蛛可能會把缩略图当成獨立资源抓取,却又找不到對應的頁面。更稳妥的做法是让图片包在一层指向詳情頁的連結里,缩略图只是它的展示形式。
附件與下载文件
PDF、Word、Excel 這類附件容易被忽略。它們体积比頁面大,抓取成本更高。如果附件和頁面同名同地址、内容又一致,就形成了重复;如果附件已经過期,仍然挂在内頁里,就會持續产生 404 或空内容。
建议在附件集中存放的目錄上做一次清点:哪些還在被引用,哪些已经没人用。對不再使用的附件,要么從頁面里删掉連結,要么返回規范的狀態碼。
图片站点地图與 robots 規則
如果站点有大量图片,可以考虑用图片站点地图标注主要图片。但注意,不要在 robots.txt 里把图片目錄整片屏蔽,否則頁面里的图片會變成一個個無效請求。确實不想被索引的目錄,可以用响應头控制,而不是直接拒绝訪問。
一次可执行的自查
- 随机抽 5 到 10 個有图片的頁面,查看渲染後的 HTML,確認图片地址不是占位图。
- 查看抓取日誌里图片和附件的請求數量,以及這些請求的狀態碼分布。
- 整理站点内引用到的附件目錄,找出長期没有被点击或被引用的文件。
- 检查 robots.txt,確認没有誤屏蔽图片、附件、静態资源目錄。
- 確認列表頁缩略图都有一條指向詳情頁的可抓取連結。
處理时的几個原則
- 能抓到的,就给它一個明确去處。图片最好挂在有内容的頁面上,附件最好有對應的說明頁。
- 不想要的,用清晰信号拒绝。用 404 或响應头,而不是让蜘蛛拿到一個 200 狀態的空壳。
- 体积大的,少让它重复出現。同一張原图不必在每個列表頁都輸出一次。
非 HTML 资源不會直接影响排名,但它們會占用抓取額度、影响图片和附件的入口质量。把這块清干净,收益通常体現在抓取效率上,而不是立竿见影的流量變化。
這類自查不需要大動干戈,一次把图片和附件的引用關系理清楚,之後每次上新内容按同样的規則處理,就能减少很多無效請求。