在蜘蛛池入口页里,链接的放置方式直接影响搜索蜘蛛能不能顺着发现目标 URL。有些站长为了页面美观或点击统计,把目标 URL 写在 button 按钮的 onclick 事件里,或者放在表单提交后跳转。这种做法对人有用,对搜索蜘蛛却不太友好。
搜索蜘蛛不会主动点击按钮
搜索蜘蛛抓取页面时,主要工作是下载 HTML 并解析其中的链接。它不会像真实用户那样移动鼠标、点击按钮,也不会执行按钮点击后触发的跳转逻辑。因此,如果目标 URL 只出现在 onclick 里,或者只存在于某个点击事件的处理函数中,蜘蛛在初始解析时通常看不到这个地址。
即使页面通过 JavaScript 动态插入了链接,蜘蛛能否发现也取决于它是否执行脚本、执行到什么程度。不同搜索引擎对 JS 渲染的支持有差异,入口页本身如果权重和抓取频次有限,更不要把发现 URL 的希望完全押在脚本交互上。
表单提交也不是可靠的发现路径
另一种常见做法是把目标 URL 放在表单 action 里,或者用表单提交后 302 跳到目标页。蜘蛛一般不会主动填写表单并提交,所以表单 action 里的地址不一定会被当作可跟进链接。即便蜘蛛抓取了表单页面,也不代表它会触发提交行为。
判断标准很简单:如果禁用 JavaScript、不点击任何按钮,页面 HTML 里还能不能看到一个可点击的 a href 链接?如果看不到,搜索蜘蛛发现目标 URL 的概率就很低。
更稳妥的放置方式
- 使用标准 a 标签:把目标 URL 放在 a href 里,锚文本可以写相关关键词或裸 URL,确保 HTML 源码中直接可见。
- 不要只依赖 onclick:如果按钮需要保留点击交互,可以同时提供一个 a 标签作为兜底链接,让蜘蛛和禁用 JS 的用户都能访问。
- 避免表单提交作为唯一入口:表单适合用户操作,不适合作为搜索蜘蛛发现 URL 的主要路径。
- 控制入口页链接数量:一个入口页放太多目标链接,可能分散抓取,重点 URL 反而被忽略。
- 结合日志观察:在服务器日志中查看搜索蜘蛛是否请求了目标 URL,比只看入口页是否被抓更可靠。
已经用了按钮交互怎么办
如果入口页已经上线,也不必推翻重做。可以在按钮下方增加一个“直接访问”或“相关链接”区域,用普通 a 标签列出目标 URL;或者由后端渲染时就把目标链接输出到 HTML 里,前端再用 JS 增强交互。这样既保留用户体验,也不影响蜘蛛解析。
另外要注意,按钮点击后如果通过 JS 跳转,跳转目标不一定被蜘蛛视为链接关系。即便蜘蛛执行了脚本,也可能因为跳转方式、加载顺序或超时问题而错过目标 URL。把链接放在 HTML 里是最直接的办法。
小结
蜘蛛池入口页的作用是给搜索蜘蛛提供发现目标 URL 的路径,而不是模拟用户点击。按钮点击、表单提交、复杂 JS 交互都不适合作为唯一的链接出口。想让目标 URL 更容易被发现,优先使用标准 a 标签,并保证入口页本身可以被正常抓取、没有被 robots.txt 或 meta 标签意外拦截。