这个坑值得记一笔。商品卡片的价格写在 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%,适配提示消失。
提醒一点。交互才出现的内容对用户友好,对爬虫等于不存在,关键信息要默认可见。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
