首页是种子,不是全部
蜘蛛进入一个新站,入口通常只有两个:首页,或者站点地图。它并不清楚你有多少栏目、多少详情页,只能从眼前的链接往下走。所以首页真正的作用不是展示,而是提供一个起点——从这里出发,它能不能走到每一个值得被抓的页面。
很多站点的问题不在首页本身,而在第一跳之后。首页链接被完整抓取,再往里一层就断了。这不是内容质量问题,是路径问题。
第一跳之后,蜘蛛在建立什么
顺着链接往下走的过程里,蜘蛛实际上在还原一张结构图:哪些是栏目页,哪些是列表页,哪些是详情页,同类页面之间怎么互相关联。这张结构图决定了后续抓取的顺序和频率。
如果这张图清晰,蜘蛛知道某个目录下大概还有多少页、值不值得继续投入;如果图是乱的,它只能靠猜,猜的结果通常是反复抓首页和几个热门入口,剩下的页面长期没有访问记录。
常见的三种骨架断裂
导航依赖渲染后才出现
主导航用脚本动态生成,源码里没有对应的 a 标签。蜘蛛拿到初始 HTML 时看不到路径,是否能等到渲染完成,取决于渲染资源和队列安排,并不总是可靠。
层级过深,中间缺少列表入口
详情页只能靠相关推荐或搜索页到达,而相关推荐的内容每次访问都不一样。换句话说,从栏目页到详情页之间没有一条稳定、可重复的链接,蜘蛛每次走到这里都像第一次来。
关键入口藏在交互后面
筛选、折叠、点击展开之后才出现的链接,对用户是便利,对蜘蛛是障碍。除非有另一条静态路径能到达同样的页面,否则这些 URL 的发现概率会明显下降。
让骨架清晰起来
- 主导航和页脚导航使用可直接解析的链接,不要只靠事件绑定。
- 每个栏目提供一条稳定的列表入口,列表页本身可被直接访问。
- 分页给出真实可点的链接,避免用脚本追加内容却不改变地址。
- 面包屑保持层级一致,让蜘蛛理解页面之间的从属关系。
- 必要时维护一份 HTML 版本的站点地图,作为兜底通路。
这些做法的共同点是:让链接在源码里就能被读到,而且每次访问结果一致。稳定性比数量更重要。
用日志验证骨架是否成立
判断路径通不通,最直接的办法是看访问日志。按目录统计蜘蛛的命中次数,如果首页和几个栏目反复出现,而某个子目录长期为零,基本可以判断通往那里的路径有问题。
也可以反过来观察:某个页面被发现之后,它周围的同类页面有没有陆续被访问。如果只有孤零零一个页面被抓,说明它所在的那一层没有形成可延展的链接网络。
蜘蛛不会因为你写了链接就一定抓,但走不到的链接,它一定抓不到。
小结
第一跳的质量决定了整站后续的抓取节奏。与其反复调整抓取频率,不如先把从首页到重要页面的那条路走一遍:能不能在源码里读到链接,链接指向是否稳定,中间有没有断点。路径通畅之后,URL 发现和抓取深度的问题往往会自然减少。