問题的来源
很多蜘蛛池入口頁為了看起来像個正常頁面,會把目标連結做成图片墙、卡片或按钮。视觉上能点,但源碼里可能根本没有 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,再考虑样式和布局。抓取能否發生,取决于源碼,不取决于頁面好不好看。