问题的来源
很多蜘蛛池入口页为了看起来像个正常页面,会把目标链接做成图片墙、卡片或按钮。视觉上能点,但源码里可能根本没有 a 标签的 href。搜索蜘蛛不截图,也不会去点按钮,它只读取服务器返回的 HTML。所以要判断能不能被发现,只需要问一句:关掉 CSS 和 JavaScript 之后,这个 URL 还存在于源码里吗?
分情况看,哪些能跟,哪些不能
能被跟随的做法
- a 标签里包图片:<a href="目标URL"><img src="图片"></a>,href 是真实属性,图片只是显示内容,搜索蜘蛛照样会跟过去。
- 图片热区(image map),每个 <area> 上带 href:这类链接同样能被解析,只是结构复杂,容易出现相对路径写错的问题。
- 按钮其实是一个带了样式的 a 标签:外观是按钮,本质还是链接,不影响抓取。
不能跟随或不可靠的做法
- 纯图片,外面没有 a 标签:没有 href,搜索蜘蛛拿不到 URL,alt 里写网址也没用。
- 用 的按钮:要执行 JS 才会跳转,蜘蛛一般不会执行,可能读到 URL 文本,但不会把它当成链接入口。
- CSS background-image 拼出来的按钮:图片里就算画着网址,那也是像素,不是可解析的文本。
- 表单提交按钮:GET 表单的 action 有时会被识别,POST 表单基本不会被主动提交,用入口页做 URL 分发时意义不大。
怎么快速自查
- 浏览器里查看网页源码,搜索目标域名或路径,确认它是否出现在 href 的值里,而不是只出现在注释、alt 或 JS 字符串中。
- 用抓取工具或命令行拉一次入口页,禁用 JavaScript,看返回的 HTML 里有没有可解析的链接。如果只有执行 JS 后才出现,搜索蜘蛛很可能看不到。
- 看服务器日志:搜索蜘蛛请求目标 URL 时,来源页(referer)是不是你的入口页。日志能验证,比猜测可靠。
入口页该怎么改
最省事的办法是在图片或卡片旁保留一行正常的文本链接,图片只作为视觉补充。或者让图片外层始终带 a 标签,href 指向目标 URL,图片本身放什么都可以。
如果入口页是模板批量生成的,建议在模板层面统一加上 href,而不是上线后逐个页面去修。模板里多写一个 href 的成本很低,事后从日志里发现某批页面根本没被抓,再回头排查就麻烦得多。
判断标准很简单:搜索引擎眼里只有文本和属性,没有“按钮”和“图片”这种概念。
几个常见误区
- 以为图片 alt 写了网址就等于做了链接。alt 只是替代文本,不产生链接关系。
- 以为按钮做得显眼就更重要。抓取跟样式、颜色、位置没有关系。
- 以为加了 rel="nofollow" 就一定不被抓。nofollow 更多是提示,不等于禁止抓取。
- 以为搜索蜘蛛会像用户一样滚动、悬停、点击。它只处理 HTML,个别情况下才执行渲染,而且不一定完整。
小结
图片和按钮不是不能用,但入口页的第一目标是让目标 URL 以可解析的形式出现在源码里。先确保每一条目标链接都有真实的 href,再考虑样式和布局。抓取能否发生,取决于源码,不取决于页面好不好看。