把入口页的链接做成图片、按钮或纯 JS 点击,是很多站点改版时顺手做的事。放到蜘蛛池入口页上,最容易出现的结果是:页面看起来有入口,搜索蜘蛛却什么都没拿到。下面按“搜索蜘蛛怎么找链接—哪些写法会丢—怎么补回来”讲清楚。
搜索蜘蛛提取链接的基本方式
搜索蜘蛛解析 HTML 时,最主要的链接来源就是 a 标签的 href 属性。只要 href 是一个可解析的 URL,并且这个 a 标签出现在服务器返回的 HTML 里,或者渲染后能稳定出现,它就有机会被跟进。
图片、按钮本身不具备“指向某个 URL”的语义,除非外面套了 a 标签,或者有额外的机制把 URL 暴露出来。
几种看起来有链接、实际抓不到的写法
- 图片包在 a 标签里:可以。img 放在 a href 内部,链接照样能提取,图片只是可点击的外观。
- 纯 img 的 src 指向目标页:不行。src 是资源地址,不被当作页面链接,只可能被当作图片资源去抓。
- button 加 onclick 跳转:通常不行。onclick 里的 URL 不是链接,搜索蜘蛛一般不会执行页面上所有脚本去翻找 URL。
- a 标签没有 href,只挂 JS 事件:不行。没有 href 就没有可解析的目标。
- href 写成 javascript:void(0):不行。这不是可抓取的 URL。
- 用 CSS background-image 做入口:不行。样式表里的图片地址不构成页面链接。
- 靠表单提交后跳转:一般不行。除非提交后的目标本身能被独立发现。
想保留图片或按钮外观,可以这样补一条路径
- 外面套 a href,把图片或按钮图形放进 a 内部,外观不变,链接可提取。
- 同一个入口再补一个文本 a 链接,可以放在正文末尾或“相关入口”列表里,避免只有图形入口。
- 如果入口是 JS 渲染出来的,确认渲染后的 HTML 里确实存在 a href,并且不依赖用户交互才出现。
- href 用绝对路径写,减少解析歧义;跨域时尤其注意协议和域名是否完整。
- 入口页不要只靠一个链接承载,同页给出多一条通往同一目标的自然链接,可降低单点失败的概率。
上线前的自查方法
- 禁用 JavaScript 抓取一次页面,看链接是否还在。
- 查看“查看网页源代码”而不是浏览器审查元素,确认 href 出现在原始 HTML 里。
- 用抓取工具或 curl 拉一遍 HTML,检索目标 URL 是否出现。
- 到服务器访问日志里确认搜索蜘蛛是否真的请求了入口页,以及是否请求了目标 URL。
- 如果日志里入口页有抓取、目标 URL 长期没有请求,基本可以判断链接没有被识别出来。
提示:把入口做成图片或按钮并不会直接带来惩罚,它只是让 URL 发现少了一条路。发现路径变少,抓取节奏可能变慢,但不等于收录一定出问题——目标 URL 本身是否可抓取、内容是否值得收录,仍是更靠前的影响因素。
小结
搜索蜘蛛只认它解析得到的 URL。外观可以用图片和按钮来做,但 href 这条机器可读的路径最好不要省。入口页的职责是把 URL 稳定地暴露出来,把样式和发现能力分开处理,通常比事后去猜为什么没抓更省事。