先分清“可点击”和“可抓取”
在浏览器里,一段纯文本 URL 可能自動變成蓝色可点,一張图片按钮也能点,用戶照样能到達目标頁。但對搜尋蜘蛛来说,這两件事是分開的:用戶能不能点,看的是浏览器和脚本;蜘蛛能不能發現新 URL,看的是 HTML 里有没有一個可解析的連結。
主流搜尋蜘蛛在解析入口頁时,優先提取的是 a 标簽的 href 属性。其他形式——裸連結、图片、按钮、表單、脚本跳轉——都属于間接方式,能否被發現取决于引擎實現、頁面渲染和抓取配額,稳定性和前者不在一個量級。
一個简單的自检:在浏览器里禁用 JavaScript 後刷新入口頁。如果目标連結整体消失,那它對搜尋蜘蛛来说大概率也等于不存在。
几種常见寫法到底行不行
1. 纯文本 URL
把 https://example.com/page 直接寫在正文里,不包任何标簽。部分搜尋引擎會對這類文本做自動連結识別,尤其是獨立成行、格式完整的时候,但這是推测性的能力,不同引擎表現不一致。同一段里出現多個裸地址、被标点紧贴、或夹在全角符号中間,识別率還會進一步下降。把裸連結当成补充說明可以,当成入口頁主要的 URL 出口不可靠。
2. 图片與图片热区
如果图片外面包了一层 a 标簽,蜘蛛可以顺着 href 走,图片本身能不能讀不影响連結發現。但如果頁面上只有 img 标簽,或者靠 map、area 定义热区、用脚本绑定点击,没有任何 href,就不會形成可跟随的連結。图片的 alt 文本也不等同于連結地址。
3. 按钮
用 button 标簽、div 加点击事件、或者给 a 标簽加 role=button 做出来的按钮,只有在底层确實存在 href 时,蜘蛛才能跟随。纯 onclick 跳轉属于脚本行為,即使能被渲染,也要看渲染完成度和抓取资源,稳定性不如直接给 href。
4. 表單提交
表單的 action 是提交地址,不是頁面上的超連結。蜘蛛一般不會主動填寫表單並提交去發現结果頁,需要交互才能到達的頁面,等于把這部分 URL 藏在互動後面。要把结果頁暴露出来,仍然要在頁面上用 a 标簽指向它。
改成可抓取的寫法
- 统一用 a 标簽加 href,href 寫完整的绝對地址,不要只寫路径,也不要靠脚本在後面拼接。
- 锚文本尽量說明目标内容,不要整頁都是“点击這里”“更多”。
- 不要把 href 寫成 javascript:void(0),再用脚本改寫成真實地址。
- 需要多個目标时,把連結放在正常文档流里,不要全部塞進隐藏容器或折叠面板的未展開部分。
- 确實要按钮外观,就用 a 标簽做样式,保留真實 href。
怎么驗證連結真的被讀到了
- 查看頁面源碼,直接搜 href,確認目标 URL 是否真的出現在 HTML 里。
- 禁用 JavaScript 後刷新頁面,看目标連結是否還在。
- 用命令行抓取工具取一次 HTML,確認返回内容里就包含目标連結,而不是浏览器渲染之後才有。
- 看服務器日誌里搜尋蜘蛛對入口頁的請求,以及之後有没有對目标 URL 發起請求。抓取有延迟,不要用几分钟内的日誌就下结论。
- 如果站点前面有 CDN 或反向代理,確認返回给搜尋蜘蛛的 HTML 和给普通用戶的一致。
几個容易踩的坑
- 裸連結和 a 标簽混用,结果頁面上一半目标能被跟随、一半不能,排查时很容易誤判成入口頁没效果。
- 图片連結的 href 寫成相對路径,入口頁目錄或域名一變,整批連結全断。
- 用脚本给大量 a 标簽补 href,連結數量一多,處理可能来不及,蜘蛛讀到的仍是空属性。
结论其實很朴素:入口頁的核心任務是让目标 URL 被看见。不管頁面最终设計成什么样子,给每個目标地址一個真實的 a 标簽和 href,是成本最低、也最容易被搜尋蜘蛛處理的方式。纯文本、图片、按钮、表單可以作為用戶体驗上的补充,但不建议当作主要出口。