这个坑值得记一笔。商品卡片的价格写在 hover 才出现的浮层里,桌面看着正常。移动端没有 hover,用户点开才看到价格,百度抓到的移动页正文里价格是空的,适配提示内容不一致。

刚开始盯着「价格由接口异步填充,首屏 HTML 里没有」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。价格节点默认 display none,靠 hover 触发;移动端用 touch 事件补显示,但爬虫不会触发;桌面与移动输出两套模板,内容量不一致。

第一件事是看移动 UA 下的 HTML

curl -s -A 'Mozilla/5.0 (Linux; Android)' https://www.example.com/p/1 | grep -o 'price[^<]*'

价格默认渲染在正文里

<span class="price">¥299</span>

浮层只做增强不做承载

.price-tip { display: none; }

末了对比两端正文长度

curl -s -A 'Baiduspider' https://www.example.com/p/1 | wc -c

改之前先确认了最近有没有人动过配置,避免白查一遍。

别只看报错消失,验证要多做一步。两端 HTML 里都能直接读到价格,正文长度差小于 5%,适配提示消失。

提醒一点。交互才出现的内容对用户友好,对爬虫等于不存在,关键信息要默认可见。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189