蜘蛛进入一个站点后,遇到的不只是 HTML。图片、PDF、视频、JSON、CSS、JS,都会以某种形式出现在它的抓取队列里。有的会被当资源取走,有的只被记下 URL,还有的会直接消耗抓取预算。理解这几类资源的差别,能帮你把抓取机会用在更值得的页面上。
非 HTML 资源分两类
大致可以分成「作为页面组成部分被引用」和「作为独立 URL 被索引」两种角色。
- 被引用的资源:如页面里的图片、CSS、JS、字体。蜘蛛抓它们主要是为了渲染或理解页面,通常不会单独出现在搜索结果里。
- 独立可索引的资源:如 PDF、部分文档、视频落地页、结构化数据文件(JSON、XML)。这类资源有独立 URL,可能被单独收录。
同一类资源在不同场景下的归属也会变。比如一张图片在普通页面里是「资源」,但放在专门的图片路径下,又有可能被图片搜索单独处理。
图片:抓引用,也看上下文
普通网页里的图片,蜘蛛一般会取回文件本身,但真正决定会不会被索引的,是它周围的上下文:alt 文本、文件名、所在页面的主题、图片是否在首屏、是否被懒加载挡住。
常见误区是把大量图片堆在同一个页面上,指望它们被逐一发现。更稳的做法是:
- 让每张有价值的图片出现在主题相关的页面里,而不是孤立的图库页。
- 文件名和 alt 描述具体内容,不用「img_001」这类无意义命名。
- 图片体积控制在合理范围,避免单页加载几十张大图拖慢整站响应。
PDF 与文档:容易被忽略的可索引资源
PDF、DOC、PPT 这类文件如果直接放在可访问目录下,会形成独立 URL。蜘蛛发现有两条路径:一是页面里链过去,二是被 Sitemap 或外部链接指向。
风险在于,很多站点把内部文档、报价单、旧版手册直接放在开放目录里。这些文件一旦被收录,会以和网页不同的形式出现在搜索结果中,内容过期或信息不准确时处理起来比较麻烦。
判断标准很简单:这份文档如果被陌生人搜到,你是否愿意它出现在结果页里。不愿意,就不要用公开的静态目录存放。
需要被索引的文档,建议给一个稳定的 URL,并在 Sitemap 中列出;不需要的,用 robots.txt 或访问控制挡在抓取之前。
视频:页面才是入口
蜘蛛对视频的处理,主要看承载它的页面。视频文件本身通常不会成为搜索入口,能被理解的往往是页面上的标题、描述、字幕、封面和结构化数据。
所以视频的抓取路径设计,重点不在视频文件,而在:
- 是否有独立的视频详情页,且 URL 稳定。
- 页面是否有可读的文字说明,而不是只有一个播放器。
- 视频文件是否使用分段请求,服务器能否稳定支持 range 响应。
如果视频页依赖 JS 动态插入播放器和文案,蜘蛛第一次拿到的可能只是一个空壳。重要的描述信息最好服务端就能输出。
这些资源怎样影响抓取预算
被引用的资源同样占用请求。一个页面引用 80 张图片和 20 个脚本,蜘蛛为理解这个页面付出的请求数就会明显上升。当这类请求变多,留给真正内容页的抓取额度就会被挤占。
可以按下面的顺序做一次盘点:
- 列出单页引用的资源数量,看是否存在明显偏高的模板或组件。
- 检查是否有大量未被任何页面引用的孤立资源文件,它们可能仍能被直接访问和抓取。
- 确认 robots.txt 是否把无意义的资源目录挡在抓取之外,比如缩略图缓存、临时导出目录。
- 观察服务器日志中蜘蛛对资源类 URL 的请求比例,如果偏高,再回头看模板和目录结构。
索引边界要主动划
哪些资源希望被单独收录,哪些只作为页面的一部分存在,这个边界最好由站点自己划定,而不是等蜘蛛去猜。
具体做法不复杂:可索引的文档给出稳定 URL 并写进 Sitemap;不可索引的内部文件用 robots.txt 或权限控制拦住;图片和视频则把描述信息放在 HTML 里,而不是只放在 JS 之后。这样蜘蛛拿到的路径更清晰,抓取也不会浪费在你不打算公开的内容上。