入口頁能带出多少目标 URL,往往不取决于你放了多少條連結,而取决于這些連結以什么形式存在。图片、按钮、noscript 里的 a 标簽,在浏览器里看起来都“能点”,但對搜尋蜘蛛来说,可發現性差別很大。先分清一件事:搜尋蜘蛛發現 URL,靠的是 HTML 里能被解析出来的連結,而不是頁面视觉上有没有可点击区域。
一、先明确:搜尋蜘蛛找連結,看的是 HTML 而不是画面
抓取程序拿到的是服務器返回的原始 HTML 源碼,它會在里面寻找 href 属性。至于這個連結在頁面上是文字、图片還是按钮样式,本身不影响解析结果;真正影响结果的是,這個目标地址有没有以一個标准的連結属性出現在 HTML 里。
所以判断入口頁有没有“埋好連結”,不能只看浏览器截图,要看源碼。
二、三種常见“看起来能点”的形式
1. 图片連結
如果外层是一個 a 标簽,里面套着 img,href 指向目标 URL,那么這條連結是可被發現的。但如果只是 img 标簽本身,加了一個 onclick 事件,或者包在 div 里由脚本處理点击,那它在 HTML 里就不是一條連結,搜尋蜘蛛通常不會把它当成通往目标 URL 的入口。
2. 按钮與 JS 点击跳轉
button 元素、div 加 click 事件、点击後执行 location.href 跳轉,這些都是交互行為,不是連結结构。能不能被识別,取决于搜尋蜘蛛是否渲染 JavaScript、渲染到什么程度,以及渲染结果是否被用于發現新 URL。相比之下,直接用 a 标簽輸出 href 要稳定得多。
3. noscript 里的备用連結
noscript 中的 a 标簽在多數情况下是可以被解析的,所以把它当成兜底手段是可行的。但要注意两点:一是它不要被後續脚本覆寫或刪除;二是如果頁面正常狀態下完全靠 JS 渲染列表,noscript 就成了唯一通道,這时它的價值和風險都會放大。它适合做补充,不适合做長期唯一方案。
三、排查时按這個顺序看
- 查看入口頁返回的原始 HTML,而不是浏览器渲染後的 DOM,直接搜尋 href。
- 確認 href 是真實可訪問的地址,而不是 # 或 javascript:void(0) 這類占位寫法。
- 在禁用 JS 的情况下再抓一次,對比两次能解析出的連結數量,看差距有多大。
- 把入口頁里所有能解析出的連結整理成清單,和你的目标 URL 清單做差集,缺口往往就出現在這里。
- 確認連結形式没問题之後,再去考虑抓取频次、抓取配額和頁面质量問题。
四、想稳定發現,几個更實用的做法
- 重要的目标 URL 尽量用真正的 a 标簽加 href 輸出,不要只依赖点击事件。
- 連結優先放在正文内容区,別全部塞進图片轮播、按钮组或折叠面板後面。
- 用 JS 渲染的列表,尽量同时輸出一份静態可解析的 HTML 連結。
- 單頁連結數量控制一下,一次堆几百條同质連結,容易分散抓取注意力。
- 定期检查入口頁,避免連結指向 404 或跳轉到無關頁面。
搜尋蜘蛛“能發現”只是第一步。後面還有抓取配額、頁面质量和索引策略,任何一环卡住,被發現都不等于被收錄。把入口頁的連結形式做扎實,是為了让前面這一步不成為瓶颈,而不是為了換一個收錄承诺。
五、小结
入口頁的連結藏在图片、按钮或 noscript 里,能不能被發現,答案取决于有没有輸出可解析的 href。图片和按钮形式的跳轉依赖脚本,稳定性天然弱一档;noscript 可以做兜底,但不宜作為唯一来源。遇到目标 URL 迟迟没動静时,先看源碼里的連結结构,再去看抓取資料,顺序反了容易白忙。