做前端交互的时候,很多人只盯着用户体验,却忘了搜索引擎蜘蛛也是网站的访客。交互元素优化这件事,如果处理不当,按钮、标签页、弹层这些组件会变成爬虫面前的挡路石,导致重要内容收录不全。这篇文章想聊聊怎么在保留交互效果的同时,让蜘蛛顺畅拿到页面里的核心信息。
搜索引擎的爬虫在多数情况下执行的是简化版的页面加载,不会像真人一样去点击展开、滚动加载或者切换选项卡。如果一个产品的详细说明放在用JavaScript控制的Tab里,默认只显示第一个标签,其余内容要靠用户点击才会出现在DOM中,爬虫很可能只抓到第一部分。我之前排查过一个电商站,分类页的筛选结果靠Ajax局部刷新,爬虫每次来访都只看到初始的十几件商品,其余几百条始终没进索引。
还有种常见情况是按钮用 <div onclick="..."> 而不是 <a href="...">,蜘蛛没有可跟随的链接线索,相关页面就断开了内链传递。这种结构对权重流动非常不友好。
渐进增强的核心是先保证无脚本状态下内容完整,再用交互做体验加成。以常见的产品参数Tab为例,原始写法可能是这样的:
<div class="tabs">
<button class="tab" onclick="showTab('spec')">规格</button>
<button class="tab" onclick="showTab('pkg')">包装</button>
<div id="spec" style="display:block">规格内容</div>
<div id="pkg" style="display:none">包装内容</div>
</div>爬虫来访时 pkg 是隐藏的,内容虽在HTML里但容易被忽略权重。改成下面这样更稳妥:
<nav class="tabs">
<a href="#spec">规格</a>
<a href="#pkg">包装</a>
</nav>
<section id="spec">规格内容</section>
<section id="pkg">包装内容</section>所有内容默认都在页面上,锚点链接让爬虫能理解结构关系,前端再用脚本接管点击平滑切换。这样既保留了交互,又没牺牲抓取。
页面上但凡有跳转意图的元素,优先用 <a> 标签并带上真实 href。如果是纯行为操作比如加入购物车,用 <button> 没问题。我整理了一个简单对照:
| 元素类型 | 是否带href | 对SEO的影响 |
|---|---|---|
| 跳转类按钮 | 应带真实地址 | 形成内链,传递权重 |
| 筛选切换 | 可用hash或参数 | 保证内容可被发现 |
| 纯动作 | 不需要 | 无直接抓取收益 |
有些站点把整屏轮播图做成 div 背景加点击事件,里面的落地页链接全靠脚本触发,这种一定要改成锚点包裹,否则轮播图引来的流量入口蜘蛛根本记不住。
移动端常用的抽屉菜单、活动弹层,经常用 visibility:hidden 或 display:none 彻底藏起来。如果弹层里放的是活动详情页的入口或者文章列表,建议用 <noscript> 提供纯文本版本,或者在服务端渲染时先输出一份静态链接区。曾经有个资讯站把专题合集放在登录后弹窗,未登录用户和爬虫都看不到,专题页半年没被收几条。
交互元素优化不是让特效消失,而是让特效底下铺着爬虫能走的路。
对于评论区、问答折叠块这类交互模块,除了保证内容在源码里,还可以用 Schema.org 的 JSON-LD 把关键实体标出来。例如折叠的FAQ,可以在 head 里放一段:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "如何退款",
"acceptedAnswer": {"@type": "Answer", "text": "在订单页申请"}
}]
}
</script>这样即便交互层复杂,搜索引擎也能从结构化数据直接读懂内容,不依赖展开动作。
现在主流爬虫能跑一部分JS,但资源预算有限。如果交互元素依赖多个接口串行请求才吐出正文,爬虫可能在执行到一半就离开了。把首屏核心文字直接服务端渲染,交互仅负责次级内容,是更稳的做法。我们做过对比,同样的新闻列表,纯CSR版本收录率低四成,改成SSR加懒加载交互后,收录恢复到九成以上。
另外注意 robots.txt 别把交互所需的API路径误屏蔽,有站点把 /api/content 禁了,结果前端怎么点都空,爬虫也更抓不到补灌的数据。
拿到站点先关JS用纯文本浏览器看一遍,哪些内容丢了一目了然。再用搜索控制台的任务抓取工具对比渲染前后差异。发现交互区内容缺失,优先改标签语义和默认展开策略,其次补结构化数据。多数时候不用推翻重写,调调DOM就好。
交互元素优化放在SEO项目里常被低估,但它直接决定了蜘蛛看见的网站和你看见的是不是同一个。把路修平,特效照跑,收录自然上来。
评论
加载中...