先说结论:搜尋蜘蛛判断一條連結要不要跟,看的是 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 寫扎實、把入口頁的抓取通道保持通畅,比在锚文本上反复纠结更有意义。發現只是第一步,後續能不能被收錄,還取决于目标頁自身的质量與可訪問性。