直接结论:在蜘蛛日志分析里,动态页面确认可见内容的关键不是看URL被请求了多少次,而是把日志中的抓取记录与页面在无JavaScript、执行JavaScript两种状态下实际返回的HTML做对照,判断搜索引擎蜘蛛拿到的是空壳模板还是包含正文的DOM。若日志显示蜘蛛频繁抓取某个动态URL,但服务端返回的初始HTML里没有正文、只有加载脚本,那么这条记录只能证明“来过”,不能证明“看见了内容”。
动态页面的日志往往混杂多种请求,需要先分类再判断:
/api/、?ajax=等,返回JSON。蜘蛛一般不会主动执行这些请求,日志里出现多来自真实用户或其他爬虫。只有第一类记录才和“可见内容”直接相关。把三类混在一起统计抓取量,会高估蜘蛛对正文的获取程度。
最可靠的做法是:挑日志中抓取频繁的动态URL,分别获取两份内容并比对。
curl直接请求该URL,不加任何浏览器执行环境,保存为A文件。这模拟蜘蛛第一眼拿到的HTML。判断结果:
适用条件:该方法适合内容由前端框架异步填充的列表页、详情页。若页面正文本就写在服务端HTML里,A、B应基本一致,差异过大反而说明有其他问题。
动态页面内容会随参数、登录态、库存变化。日志里一次抓取对应的是当时那一刻的响应,事后复现可能已经不同。核对时注意:
User-Agent、时间戳、状态码、响应字节数。字节数长期偏小且稳定,可能是空壳模板。验收信号:同一模板下抽查若干URL,A文件中正文特征句的出现率明显提升,且日志中这些URL的响应字节数随之增大,说明可见内容正在被正确输出。
按影响面排序,先做能覆盖最多页面的动作:
不要用robots.txt屏蔽动态URL来“减少抓取”,抓取限制不等于索引移除,被屏蔽的页面仍可能以其他方式出现在结果中。站点地图提交也不保证收录,它只帮助发现URL。HTTPS同理,它不保证内容可见,也不保证排名。
下一步:从日志中导出抓取次数前20的动态URL,按路径模板分组,每组抽1条做A/B正文对照,把“空壳模板”清单列出来,作为优先改造对象。