搜索抓取

图片、脚本与 iframe 里的 URL:蜘蛛会把这些当抓取入口吗

页面上出现 URL 的地方远不止 a 标签:图片的 src、脚本里的路径、iframe 的地址、canonical 与结构化数据里都会写地址。但这些位置对蜘蛛的意义并不相同,有的只是被请求的资源,有的参与 URL 归并,真正能撑起抓取路径的仍然是有序的站内链接。

搜索抓取

图片、脚本与 iframe 里的 URL:蜘蛛会把这些当抓取入口吗

蜘蛛拿到一个页面后,先找什么

蜘蛛下载一份 HTML 之后,第一件事是解析。解析的结果有两层用途:一层是理解这个页面讲了什么,另一层是把页面里出现的 URL 收集起来,放进待抓队列。很多人默认「URL 都在链接里」,实际上一份普通页面上的 URL 出处比想象中多。

把这些来源理清楚,才能判断某个入口值不值得依赖。

不同位置的 URL,被对待的方式不一样

a 标签的 href

这是最明确的信号。蜘蛛看到一个 a 标签,会把它理解成「这里指向另一个页面」,并且倾向于继续跟进。锚文本还会影响它对目标页面的判断。内链结构能不能起作用,基本取决于这一层写得清不清楚。

img 的 src 与 srcset

图片地址会被抓,但抓的是图片本身。蜘蛛通常不会把一张图的 URL 当成一个需要继续爬的页面入口。srcset 里的多套尺寸同理,它带来的是资源请求量,而不是页面发现。

script、link 与样式表

外链 JS 和 CSS 会被请求,因为渲染需要它们。至于文件内部的字符串,比如路由表里拼接出来的路径、接口地址,通常不会因为出现在 JS 里就直接进入抓取队列。这也是纯前端路由页面容易被漏掉的原因:它们在 HTML 层面看起来就是没有链接。

iframe

iframe 指向的文档是另一份独立资源,可能被单独抓取,但它与主文档之间的关系不像普通内链那样传递,也不适合当作主站页面的发现路径来用。

link 与结构化数据里的 URL

canonical、alternate、hreflang 里的地址,主要作用是告诉蜘蛛「这几条 URL 描述的是同一页」或者「这是另一种语言版本」。它们参与 URL 归并,但不会被当成普通的内链入口去分发抓取机会。JSON-LD 里写的 URL 也类似,更多是补充信息。

真正能控制抓取路径的还是内链

上面这些位置可以帮蜘蛛发现资源,却很难帮它发现页面。如果希望某个详情页被稳定看到,务实的做法是给它一条清晰的 a 标签路径:

  • 栏目页里给出到详情页的直达链接,而不是只放一张图或一个按钮
  • 面包屑用 a 标签写,别拿纯文本分隔符凑数
  • 相关推荐、上一页下一页保持真实链接
  • 分页与筛选入口按需开放,避免组合数量失控

内链的价值不只是「有一条路」,还包括这条路有多顺。层级浅、文本清楚、指向稳定的链接,跟进意愿更高,站内页面之间分到的机会也更均匀。

Sitemap 是补漏,不是替代

Sitemap 适合放那些内链覆盖不到、又确实希望被抓的 URL,比如新上线的页面、埋在深处的存档页。它相当于给蜘蛛一份额外清单,但不能替代站内链接。一个页面既没有内链入口,又长期没有外部链接指向,只靠 Sitemap 出现,被抓的频率往往偏低,后续更新也不容易被及时发现。

动手检查的几个点

  • 用不执行 JS 的方式打开页面,看还剩多少条 a 标签链接
  • 在浏览器里检查导航、面包屑、列表页的链接是不是真的 href,而不是 onclick 或 JS 跳转
  • 看看关键页面从首页出发需要几跳,有没有绕远路
  • 确认 Sitemap 里的 URL 与站内实际链接指向同一套地址,别出现 http 与 https、带不带 www 混用
  • 留意服务器响应是否稳定,响应时间波动大时,抓取节奏往往会跟着收缩
URL 发现是抓取的前置条件。把入口放在蜘蛛看得懂的地方,比事后补交清单更省事。