事情本身不复杂,线索都在日志里。商品列表把原来的分页换成了「加载更多」按钮,按钮只绑定 click 事件,日志显示蜘蛛进页面后没有再发任何请求。
第一反应是「首屏 HTML 里只有骨架屏,真实条目全靠脚本插入」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。按钮不是 a 标签,没有 href 可以跟随。另一种情况是数据接口需要 POST 且带 CSRF 令牌,蜘蛛无法构造。
不容易想到的是,页面没有输出任何指向后续页的链接。
第一件事是确认首屏 HTML 里是否有真实条目
curl -s https://www.example.com/list/ | grep -c 'item-title'
然后把按钮改造成带 href 的链接
<a href="/list/page/2/" class="load-more">加载更多</a>
剩下的就是用禁用 JS 的方式复验抓取结果
curl -s https://www.example.com/list/ | sed 's/<script[^>]*>.*<\/script>//g' | grep -c 'item-title'
改完先别撤,确认这几项。改成带 href 的链接并保留分页后,蜘蛛按页抓取,列表页收录量从零恢复到全部页码。
把分页换成加载更多时,至少要保留一套无脚本也能走通的链接,否则等于把深层内容从抓取路径里删掉。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
