入口页能带出多少目标 URL,往往不取决于你放了多少条链接,而取决于这些链接以什么形式存在。图片、按钮、noscript 里的 a 标签,在浏览器里看起来都“能点”,但对搜索蜘蛛来说,可发现性差别很大。先分清一件事:搜索蜘蛛发现 URL,靠的是 HTML 里能被解析出来的链接,而不是页面视觉上有没有可点击区域。
一、先明确:搜索蜘蛛找链接,看的是 HTML 而不是画面
抓取程序拿到的是服务器返回的原始 HTML 源码,它会在里面寻找 href 属性。至于这个链接在页面上是文字、图片还是按钮样式,本身不影响解析结果;真正影响结果的是,这个目标地址有没有以一个标准的链接属性出现在 HTML 里。
所以判断入口页有没有“埋好链接”,不能只看浏览器截图,要看源码。
二、三种常见“看起来能点”的形式
1. 图片链接
如果外层是一个 a 标签,里面套着 img,href 指向目标 URL,那么这条链接是可被发现的。但如果只是 img 标签本身,加了一个 onclick 事件,或者包在 div 里由脚本处理点击,那它在 HTML 里就不是一条链接,搜索蜘蛛通常不会把它当成通往目标 URL 的入口。
2. 按钮与 JS 点击跳转
button 元素、div 加 click 事件、点击后执行 location.href 跳转,这些都是交互行为,不是链接结构。能不能被识别,取决于搜索蜘蛛是否渲染 JavaScript、渲染到什么程度,以及渲染结果是否被用于发现新 URL。相比之下,直接用 a 标签输出 href 要稳定得多。
3. noscript 里的备用链接
noscript 中的 a 标签在多数情况下是可以被解析的,所以把它当成兜底手段是可行的。但要注意两点:一是它不要被后续脚本覆写或删除;二是如果页面正常状态下完全靠 JS 渲染列表,noscript 就成了唯一通道,这时它的价值和风险都会放大。它适合做补充,不适合做长期唯一方案。
三、排查时按这个顺序看
- 查看入口页返回的原始 HTML,而不是浏览器渲染后的 DOM,直接搜索 href。
- 确认 href 是真实可访问的地址,而不是 # 或 javascript:void(0) 这类占位写法。
- 在禁用 JS 的情况下再抓一次,对比两次能解析出的链接数量,看差距有多大。
- 把入口页里所有能解析出的链接整理成清单,和你的目标 URL 清单做差集,缺口往往就出现在这里。
- 确认链接形式没问题之后,再去考虑抓取频次、抓取配额和页面质量问题。
四、想稳定发现,几个更实用的做法
- 重要的目标 URL 尽量用真正的 a 标签加 href 输出,不要只依赖点击事件。
- 链接优先放在正文内容区,别全部塞进图片轮播、按钮组或折叠面板后面。
- 用 JS 渲染的列表,尽量同时输出一份静态可解析的 HTML 链接。
- 单页链接数量控制一下,一次堆几百条同质链接,容易分散抓取注意力。
- 定期检查入口页,避免链接指向 404 或跳转到无关页面。
搜索蜘蛛“能发现”只是第一步。后面还有抓取配额、页面质量和索引策略,任何一环卡住,被发现都不等于被收录。把入口页的链接形式做扎实,是为了让前面这一步不成为瓶颈,而不是为了换一个收录承诺。
五、小结
入口页的链接藏在图片、按钮或 noscript 里,能不能被发现,答案取决于有没有输出可解析的 href。图片和按钮形式的跳转依赖脚本,稳定性天然弱一档;noscript 可以做兜底,但不宜作为唯一来源。遇到目标 URL 迟迟没动静时,先看源码里的链接结构,再去看抓取数据,顺序反了容易白忙。