蜘蛛爬取那些年我踩过的坑:日志不会说谎,但人会
去年年底,我手上一个日更10篇的资讯站,收录跟死了一样。每天发,蜘蛛也来,就是不收。盯着日志看了俩小时,找到病根了——全是304状态码,蜘蛛根本不愿意费劲扒新内容。骂娘。但问题解决起来也简单,后面再说。做SEO久了你就会发现,蜘蛛爬取这事儿,原理就那几页PPT,但真落实到自家网站,幺蛾子多得能写本书。光看官方文档没用,得实实在在去扒日志、做测试、交学费。今天这篇没打算教基础概念,那些东西随便搜搜一大把。我就聊聊这几年我在蜘蛛爬取上栽过的跟头,和一点野路子心得。
一、日志是蜘蛛的真心话,别听培训忽悠什么“智能蜘蛛”
很多刚入行的朋友,喜欢把蜘蛛想象成特别聪明的东西——会智能判断内容质量,会抓重点。大错特错。至少在初始抓取阶段,蜘蛛的智商约等于一个急脾气的抄写员。它只按链接走,先来后到,没有优先级。除非你用规则告诉它。
我习惯每周抽半小时,把原始访问日志里 spider 标识的那部分拉出来,用 awk 处理一下。看三个数:每个蜘蛛的总抓取量、状态码分布、高频抓取的路径。特别容易发现问题。比如有次发现 Googlebot 一个月抓了我们后台登录页4000多次——因为有个测试同事忘了删外链。蜘蛛就傻乎乎地一直爬403页面。浪费抓取预算。
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/809015d5-ba38-46ac-8525-dd76a000b51f.jpg
搜索引擎蜘蛛抓取日志分析界面截图
状态码302是个大坑。很多站长搞跳转,直接用302临时重定向,蜘蛛一看,“哦,临时搬家,下次我还来原地址”。结果它反复抓原URL,新页面就是不索引。我的经验是,永久迁移老老实实上301,别图省事。这点百度尤其敏感。
还有个小细节——蜘蛛抓取时间分布。如果你发现凌晨三点蜘蛛死命抓,白天反而少,说明你服务器的负载可能在夜里低,但同时也意味着新内容发布不及时的话,蜘蛛抓取与用户访问脱节。我后来调整了站内推荐模块的更新策略,在蜘蛛活跃时段多挂链接,效果立竿见影。
二、抓取预算这东西,省着用比努力赚更重要
说起来都是泪。我早期做过一个几万页的电商站,信息架构那叫一个烂,参数筛选产生大量重复URL,蜘蛛来了就在这些页面里打转,真正更新的产品详情页抓取频率很低。收录惨不忍睹。直到看了 Google 的抓取预算指南,才意识到自己在花钱请蜘蛛逛迷宫。
所以后来我养成一个习惯:定期用 Screaming Frog 跑全站,找出那些低价值、高抓取量的页面。比如搜索结果的空页、标签页、未过滤参数的页面。对付它们的办法就两种:要么 robots.txt 禁止,要么加 canonical 标签,把权重集中。
不过说实话,百度的处理手法更保守。对百度蜘蛛,我倾向于在站内做显性的链接修剪——低价值页面不挂 header/footer 里的全局链接,只在正文里偶尔给个口子,蜘蛛就很难爬进去。Google 聪明些,会自己判断,但百度还是实诚来者不拒。你得替它做减法。
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/c0e33035-c623-45c8-bd24-50156c29fc1f.jpg
网站信息架构优化前后蜘蛛抓取路径对比图
还有个贼有意思的现象。有一次我发现蜘蛛一天抓取首页36次,但首页几乎不改版。查了下,原来是很多站点友情链接带了时间戳参数,每次蜘蛛看到的首页URL都略有不同,它以为是新页面。我在站长平台设置了忽略参数,立马消停。这件事教会我:参数处理务必重视,这是抓取预算的隐形杀手。
三、JavaScript 渲染——让我又爱又恨的现代毒药
上个月帮朋友诊断一个用 Vue 做的单页应用站,内容全是异步加载的。百度蜘蛛过来,爬到的页面源文件基本就一个空壳,除了 id='app',毛都没有。朋友说“不是都说百度现在支持 JS 渲染了吗?” 支持个鬼。是,头部站点可能有点特殊照顾,但普通站?想都别想。
我直接测了。用百度站长工具里的抓取诊断,模拟蜘蛛抓取他一篇文章,返回的代码里根本看不见文章正文。全是 。
所以SSR(服务端渲染)或者预渲染仍然是必须的。没得商量。实在不行就用 Puppeteer 生成静态 HTML,然后针对爬虫做用户代理判断返回。不过——这里又是一个坑。千万别搞伪装,给真人看动态版,给蜘蛛看静态版,万一被判定为 cloaking,那就永无翻身之地了。所以还是全站同版最安全。
我个人现在偏向走动静分离路线:核心内容纯静态化,交互层叠加 JavaScript。这样蜘蛛抓取毫无障碍,加载速度也快。页面打开速度现在可是直接影响抓取频率的,Google明确说过慢站会降低抓取速率。我观察过,首字节时间控制在 200ms 内的站,Googlebot 每天抓取的页面数能比 600ms 的站多 30% 以上。不是玄学,日志里明摆着。
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/4693b54c-b05e-4faa-95bb-790a233dda5e.jpg
服务端渲染与客户端渲染对搜索引擎蜘蛛抓取影响示意图
四、那些容易被忽略但无比蛋疼的细节
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/24fdd500-38c3-4bc6-8b6b-3da08534c6a1.jpg
四、那些容易被忽略但无比蛋疼的细节
再啰嗦几个小点。
Sitemap 不是万能的。很多人以为提交了 sitemap 蜘蛛就会乖乖来抓。错。Sitemap 仅仅是建议性抓取清单,蜘蛛有自己的爬行节奏。我见过提交了 5000 条 URL,一个月只抓了 200 条的情况。所以不能只靠 sitemap,一定要有良好的内部链接网络。
CDN也要防蜘蛛。有次我兴冲冲换上某云 CDN,结果百度抓取量暴跌。查了半天,CDN 的 WAF 把某些蜘蛛 IP 当攻击流量给阻断了。赶紧加白名单。这类事太恼火,所以现在每次切换网络服务,我都第一时间去蜘蛛模拟抓取里测一遍。
爬虫验证要谨慎。有些站为了反爬,给蜘蛛弹出来一个验证码……我见过这么干的,然后还问为啥没收录。你说为啥。
最后扯一句站点改版时的爬取衔接。URL 结构变化,重定向做好了,蜘蛛也要有个适应期。这时候千万别频繁改动 sitemap,稳定一段时间,给蜘蛛一个重新发现和评估的时间窗口。我最长熬过近一个月,旧URL才彻底从索引里清退,新URL稳定上位。
五、移动端蜘蛛的怪癖与HTTPS的迁移之痛
现在Google已经全面移动优先索引了,百度也在往这个方向靠。移动端蜘蛛的爬取逻辑,和PC蜘蛛有啥不同?最直接的一点:移动端蜘蛛对页面加载速度的容忍度更低。我监测过,同一个站,移动蜘蛛的抓取量往往在页面首屏渲染慢于2秒时断崖式下跌。所以AMP或者PWA虽然不是必须,但速度优化必须做。另外,移动端蜘蛛有时会模拟低带宽环境,你的CSS、JS体积一大,它可能压根不请求。
还有个事。之前把一个站从HTTP迁到HTTPS,自认为301跳转做得很完美,结果发现百度收录量掉了四成。吓得我赶紧查,原来没在站长平台提交HTTPS验证站点,百度把新旧URL当成了两个完全不同的站,互相打架。迁移证书类操作,一定要在站长平台同时添加HTTPS版本,并做好站点属性变更。血的教训。
https://obgeo.oss-cn-beijing.aliyuncs.com/pvc-articles/cb0190f0-7598-4268-a8be-c5c90c842b0f.jpg
网站HTTP与HTTPS蜘蛛抓取日志对比示例
行了,今天就说这么多。蜘蛛的世界不复杂,但它很机械。你得顺着它的逻辑来,别试图跟它耍小聪明。把日志当成一面镜子,每次遇到收录问题,先去镜子里照照,答案十有八九写在那儿。 认真看完了整篇内容,感觉受益匪浅,期待楼主后续更多优质的分享。 很多点我之前都没想到,楼主一提醒才恍然大悟,收获很大。 支持理性讨论,反对无脑争吵,楼主带了个很好的头。 每一段都很有分量,认真读完全篇感觉整个人都提升了不少。 楼主态度很认真,回复也很耐心,这样的楼主值得大家支持。 讲得很透彻,把复杂的问题简单化,理解起来轻松了很多。 这样用心的帖子不多见,必须顶上去让更多人看到优质内容。 说得很客观中立,没有偏激言论,理性讨论就该是这个样子。 看了这么多帖子,还是觉得你这篇最实在,条理清晰又容易理解。 看完很有启发,也引发了我不少思考,有空也想分享下自己的看法。 思路很清晰,步骤也很详细,跟着操作应该不会出什么问题。 非常有建设性的意见,对解决实际问题有很大的参考意义。
讨论氛围很好,大家都在理性交流,这样的论坛环境太舒服了。 内容干货满满,没有多余废话,对有需要的人来说帮助真的很大。 经验很宝贵,尤其是亲身实践过的总结,比网上随便找的靠谱多了。
页:
[1]
2