蜘蛛抓取的基本单位是 URL,而不是“网页”。只要某个地址出现在链接、Sitemap 或历史抓取记录里,它就有可能进入抓取队列,至于返回的是 HTML、图片还是 PDF,蜘蛛在发起请求前并不预先区分。理解这一点,才能解释为什么服务器日志里常年出现大量以 /images/、/files/ 开头的请求。
蜘蛛为什么会去抓这些资源
- 页面渲染需要:图片、样式文件是页面的一部分。蜘蛛取回 HTML 后,通常还会继续请求页面里引用的资源。
- 独立入口:图片搜索和文档类结果有自己的索引,一张图、一份 PDF 可能靠自身获得展示机会,而不依赖所在页面。
- 链接长期存在:附件和下载文件挂在页面上,链接一直有效,蜘蛛就会按自己的节奏周期性回访。
被低估的是抓取代价
一次 HTML 请求往往只有几十 KB,而一张原图或一份产品手册可能是几 MB。蜘蛛下载它同样要占用连接、占用服务器带宽,这段时间也和站点能承受的并发是共享的。资源越多、越大、响应越慢,越容易挤占本可以用在正文页面上的抓取额度。
更常见的情况是:一批附件被反复抓取,状态码一直是 200,内容几个月没变,站点却要为此付出持续的带宽和连接开销。
判断标准可以简单化:这个资源被单独检索到,对用户有没有意义?有,就给它一条清晰的路;没有,就别让它一直挂在可抓取的地址上。
按价值把资源分成三类处理
第一类:本身就有检索价值的文档
例如产品规格书、白皮书、公开报告。这类文件值得被单独发现。
- 为它准备一个可读的落地页,正文里用清晰的链接指向文件,不要只靠一个图标或按钮。
- 文件地址尽量稳定,避免每次发布都换一个新路径。
- 可以把这类文件放进 Sitemap,并在页面上标明标题与更新时间。
第二类:页面必需的图片
- 控制尺寸与格式,避免原图直接输出到页面。
- 列表页用缩略图,详情页再给大图,减少整站的平均响应体积。
- 图片的替代文本和周围正文能帮助理解内容,比只给一个文件名更有用。
第三类:没有检索价值的资源
例如纯装饰图、后台导出的临时文件、按日期堆叠的历史附件、重复的缩略图变体。
- 用 robots.txt 屏蔽对应目录,代价是这些资源也不会出现在图片或文件类结果里,需要权衡。
- 确认已下线的文件让地址返回 404 或 410,比留着一个空白页更干净。
- 不要指望用 noindex 来省带宽——蜘蛛仍然要下载文件才能读到这个信号。
- 对于非 HTML 资源,X-Robots-Tag 响应头同样可以发挥作用。
怎么观察效果
- 在访问日志里按扩展名统计请求次数与传输字节,看看抓取量集中在哪些目录。
- 挑出被反复抓取、内容长期不变的资源,判断它是否真的需要被单独索引。
- 检查 robots.txt 是否误伤了仍在使用的图片或文档目录。
- 改完规则后,观察一段时间内日志中该类请求的占比变化,而不是只看某一天的数据。
非 HTML 资源不会因为“不是网页”就被蜘蛛忽略,它们和普通页面一样占用抓取配额。把有价值的文档留出清晰入口,把没有检索意义的资源挡在抓取范围之外,通常比单纯追求被多抓一些页面更有效。