现场是这样的。站点三个月发了九百篇,百度索引量从头到尾停在 1.2 万,一条都没增加。日志里百度蜘蛛每天抓取量正常,但请求集中在栏目页和首页,新文章的地址几乎看不到。sitemap 每天都提交,状态是成功。

中间走过弯路,把「文章发布时间被批量改过,蜘蛛判定这批内容陈旧」当成主因,改完现象没变。

原因不止一个,得分开看。新文章只有 sitemap 一个入口,栏目页分页在第二页之后不输出链接;列表页用 JS 渲染,蜘蛛拿到的 HTML 里没有文章链接;提交的 sitemap 里地址正确,但页面的首字节时间超过三秒被抓取调度降级。

先看日志里新文地址被请求了多少次

awk '$7~/\/p\//{print $7}' access.log | sort | uniq -c | sort -rn | head -20

再往下确认列表页关掉 JS 后还有没有文章链接

curl -s https://www.example.com/list | grep -c '/p/'

给每一页分页补上可抓取的内链,而不是无限滚动

grep -rn 'loadMore\|infinite' static/js/list.js

挑十篇新文手动提交,观察一周后的抓取

curl -s 'https://data.zz.baidu.com/urls?site=https://www.example.com&token=xxx' -d 'https://www.example.com/p/1024'

别只看报错消失,验证要多做一步。列表页每页都能看到二十条文章链接,分页可直达,新文提交后三天内日志里能看到抓取,索引量开始回升。

sitemap 只是告诉蜘蛛有哪些地址,不解决入口问题,一个页面要被抓,最好有站内链接指向它。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189