先说结论:搜索蜘蛛判断一条链接要不要跟,看的是 a 标签里的 href,而不是这条链接上有没有可读的文字。图片链接只要包在 a 标签里、href 指向真实地址,照样会被发现;反过来,用 button 或 div 加 onclick 拼出来的按钮,哪怕视觉上很显眼,通常也不会被当成链接去抓。
一、图片链接:锚文本为空,但链接本身有效
把图片放进 a 标签,写成 a href 指向目标页,图片放进标签内部,这是最常见的写法。爬虫解析 HTML 时先取到 href,锚文本为空只是让这条链接少了描述信息,链接关系依然成立,目标地址会进入待抓队列。受影响的只有两件事:
- 失去一个“别人怎么描述这个页面”的信号,对相关性的帮助弱于文字链接。
- 图片的 alt 有时会被当作替代文本参考,但稳定性和权重都不如正文里的锚文本。
另外要区分懒加载:如果图片本身是懒加载,src 初始是占位图,只要 a 的 href 是静态写在 HTML 里的,发现环节不受影响;受影响的只是图片内容能不能被理解。
二、按钮和 onclick:这条路通常走不通
button 元素、div 加 onclick、onclick 里写 location.href 这类写法,浏览器点得动,爬虫在解析阶段一般不会执行。搜索引擎确实会渲染一部分 JavaScript,但渲染有成本、有排队,把入口页的发现环节押在渲染上并不划算。入口页的定位就是把 URL 送进队列,这一步越靠静态 HTML,越稳。
能写成 a 标签加 href 的链接,就不要写成 JavaScript 跳转。前者是结构,后者是行为,抓取端更认结构。
三、CSS 背景图和图片热区
用 CSS 背景图做的“按钮”,本身没有 href,爬虫找不到可跟的地址,等同于一段装饰。图片热区里的 area 标签带 href,理论上也是链接,但支持和传递都比较弱,不建议作为入口页的主要发现通道。
四、想让入口页的发现效率更高,可以这样自查
- 查看网页源代码,而不是浏览器渲染后的 DOM,直接搜目标域名,看完整 URL 能不能在 HTML 里搜到。
- 确认链接是 a 标签加 href 的形式,href 是可访问的绝对地址,不是井号或空值。
- 给图片链接补一句能说明目标的 alt,给纯图标按钮补一段可见的文字锚文本,便于判断这条链接指向什么。
- 顺手检查有没有 rel=nofollow、robots.txt 屏蔽、入口页 meta noindex 之类会把发现链路掐断的设置。
- 用日志看入口页被访问之后,目标 URL 有没有在接下来几天进入抓取队列。这一步能帮你分清是发现环节的问题,还是抓取与收录环节的问题。
五、小结
没有可读锚文本,不影响链接被发现,只影响被发现之后的判断。真正会掐断发现的是:href 根本不是真实链接、链接被 nofollow、或者入口页整体不被抓取。入口页的任务是把 URL 送进队列,把 href 写扎实、把入口页的抓取通道保持通畅,比在锚文本上反复纠结更有意义。发现只是第一步,后续能不能被收录,还取决于目标页自身的质量与可访问性。