小语种SEO的访问量里有一半不是人,48门语言量下来最高的那门到92%

小语种SEO的访问量里有一半不是人,48门语言量下来最高的那门到92%
张文保 更新 35 分钟阅读 2,301 阅读
本文目录
  1. 小语种站的流量数字,为什么要先分成两半?
  2. 报表上那个数是两拨完全不同的访客加出来的
  3. 把语种换成英语,这个问题就基本不存在
  4. 为什么用维基百科的数据来量
  5. 这次量了哪些东西
  6. 这篇不谈的两件事
  7. 48门语言量下来,机器那一半到底有多大?
  8. 两头的差距比预想的大得多
  9. 完整对照表
  10. 宿务语和瓦瑞语为什么会跑到最上面
  11. 老挝语和僧伽罗语在这张表上的位置很有意思
  12. 这张表里最反直觉的一行
  13. 有没有哪个地方能证明爬虫跟读者根本无关?
  14. 把土耳其语拆成逐月来看
  15. 那个月发生了什么
  16. 分子和分母各自动了多少
  17. 怎么排除这是口径变了
  18. 解封那个月的数也对得上
  19. 这件事对做站的人意味着什么
  20. 反过来看,读者暴涨的时候爬虫会跟着涨吗?
  21. 找一门读者在四年里翻了几倍的语言
  22. 占比是怎么走的
  23. 不是所有印度语言都一样
  24. 四年趋势整体上不是单向的
  25. 那这个比例到底由什么决定?
  26. 把两条线分开算
  27. 0.992这个数意味着什么
  28. 0.920那一组说的是抓取预算
  29. 两条线一除,就是那个比例
  30. 但这个模型不该被当成公式用
  31. 爬虫是照着页数均匀抓的吗?
  32. 开工前我以为它是
  33. 完整的分档
  34. 抓取程序也在挑
  35. 这条对做站的直接含义
  36. 一个不该忽略的边界
  37. 换到你自己的站上,这几个数怎么量?
  38. 先量一个数:机器占比
  39. 再量一个数:页面数除以读者数
  40. 第三个数:单页抓取频次
  41. 第四个数:真人访问的绝对量
  42. 做完之后先别急着下结论
  43. 一个可以半天跑完的清单
  44. 报表和日志该怎么改才不骗人?
  45. 看板上要加的那一列
  46. 按语言分开看,别汇总
  47. 报警阈值该设在哪儿
  48. 日志保留期限得跟着调
  49. 别把机器流量当敌人
  50. 哪几件事这一层管不了?
  51. 页面级的分布不归这一层
  52. 抓取程序的识别方法不归这一层
  53. 搜索引擎侧的收录判断不归这一层
  54. 这份数据本身的边界
  55. 常见问题解答
  56. 机器占比多少算正常?
  57. 为什么不直接用统计代码的数据,非要看日志?
  58. 爬虫占比高,是不是说明这门语言不值得做?
  59. 土耳其那个案例,会不会只是巧合?
  60. 页面数除以读者数这个指标,多大算危险?
  61. 已经在用现成的分析工具,还需要自己拆日志吗?
  62. 这套方法在中文市场用得上吗?
  63. 权威参考资料

摘要:拿48门语言的公开流量数据逐月拆开,把访问量分成真人和机器两堆,量出来的机器占比从西班牙语的9.23%一路铺到宿务语的92.07%,中位数29.36%,有39门高过英语的15.25%。最硬的一段证据来自土耳其:维基百科在当地被关掉的第一个整月,真人访问从1.574亿掉到3164万,少了将近八成,而同期的机器访问从3992万变成4049万,几乎没动。分母塌了、分子不动,比例就从20.23%跳到56.13%。反过来看马拉地语,真人四年涨了268%,机器反而少了45%,占比从61.4%落到18.5%。三条相关系数把这件事说透:读者规模决定真人访问(r=0.992),页面数量决定机器访问(r=0.920)。本文给出48门语言的完整对照表、一份可以自己跑的核算流程,以及报表上该加哪几列。

接手一个中东欧市场的站,第一周先看数据。后台给的月访问量是四万出头,比同期的英文站好看不少——英文站上线更久、内容更多,月访问才十一万。

本地同事看完只说了一句:这四万里有多少是人?

当时答不上来。后来把服务器日志拉出来按来源过了一遍,能对上已知爬虫特征的请求占到六成多。也就是说那四万里,真正有人打开的不到一万六。

这件事之后我一直想找个能横着比的口径——不是比某一个站,而是比某一门语言。找了很久,最后落在一个谁都能查、而且逐月拆得开的地方。

小语种站的流量数字,为什么要先分成两半?

报表上那个数是两拨完全不同的访客加出来的

一份访问量报表,不管出自日志、统计代码还是CDN,本质上都是把一段时间内的请求数加起来。加进去的既有真人,也有各家搜索引擎的抓取程序、监控探针、翻译代理和数据采集脚本。

在流量足够大的站上,这两拨的比例相对稳定,看总数不太会出事。问题出在流量小的站上——机器那一半有个下限,它跟你有多少人看没关系,只跟你有多少个页面有关系。

页面越多、读者越少,机器占的比重就越高。到了某个程度,报表上那个数字的主体就不再是人了,而你还在拿它做增长判断。

这不是小语种独有的毛病,但小语种最容易撞上,因为它天然处在“页面不算少、读者确实少”这个位置。一个站上线两年,页面攒到几千个,读者却还在三位数徘徊,这在小语种市场是常态而不是意外。

把语种换成英语,这个问题就基本不存在

英文站的读者基数摆在那儿,机器那部分怎么涨也很难占到大头。你看到的访问量涨了,多半真的是有人多来了。

所以这件事归语言这一层管。同样一套技术栈、同样的页面数量,换一门读者规模差两个数量级的语言,报表的可信度就完全变了。

再往深一层,同一门语言在不同时期也会变。读者少了、页面没少,比例会立刻变形——后面那段土耳其的数据就是这么来的。所以这个数不是一门语言的固有属性,它是一个会随时间走的比值。

把语言这个变量单独拎出来看,是这篇要做的事。日志分析和爬虫核验的通用做法不在这里重讲,那是工具层,跟语言无关。

为什么用维基百科的数据来量

要横着比几十门语言,得有一个各语言口径一致、公开、而且能按月拆的数据源。商业站没有,广告平台的数据不分真人机器,第三方流量估算工具本身就是猜的。

维基媒体基金会把各语言版本的访问数据做成了公开的流量接口,逐月、逐语言、还按访客类型分成三档。这三档是全部、真人和爬虫,用的是同一套判定规则。

它当然不等于你的商业站。维基的页面构成、外链结构、更新节奏都跟电商站差得远。但要回答“同样是一门语言,机器和真人的比例会差多少”这个问题,它是目前唯一一个各语言可比的样本。做小语种研究常常要在“完美但拿不到”和“有偏差但能横着比”之间选后者,这次也一样。

本文把它当代理指标用,结论落在语言之间的相对差异上,不落在绝对数值上。这一点后面还会再说一次。

这次量了哪些东西

取48门语言,覆盖三类:读者规模最大的那批大语种作基准、被程序批量建过页面的几门作对照、还有本站这个栏目一直在写的那批小语种。时间窗是2015年7月到2019年12月,逐月。

每门语言取四个数:全部访问量、真人访问量、爬虫访问量,以及唯一设备数。前三个是同一个接口的三档,最后一个来自另一个接口,量的是一个月内有多少台不同的设备来过。

再补一个页面侧的数:截至2019年12月,这门语言累计新建了多少个内容页。用累计新建而不是用今天的条目数,是因为今天的数字对不上2019年的口径,两边混着算会得出假结论——有几门语言的页面数在这之后翻了几十倍,拿今天的数去除2019年的访问量,误差能到两个数量级。

所有数据都能按任意时点截断,所以下面所有的数都只到2019年12月为止。

这篇不谈的两件事

第一件是怎么识别爬虫。用户代理串怎么解析、假冒Googlebot怎么反查、哪些工具的探针要不要算进流量——这些是站点自己的工程活,跟这门语言是什么没关系。

第二件是页面级的分布。这篇给的是整门语言的汇总比例,回答不了“具体哪些页面在被爬虫反复抓、哪些页面一年到头没人打开”。那是另一层的问题,得用另一套抽样办法,而且要先解决一个前置的坑:怎么确定一个页面在观测期内真的存在过。

还有一件事得先说清楚:本文所有的比例都以全部访问量为分母。维基的三档里,全部访问恰好等于真人加爬虫,48门语言无一例外,没有第三类未分类流量需要额外解释。

下面从那张48行的表开始。

48门语言量下来,机器那一半到底有多大?

两头的差距比预想的大得多

2019年全年的数据摆出来,最低的是西班牙语,爬虫占9.23%;最高的是宿务语,92.07%。中间隔着整整十倍。

英语落在15.25%,48门语言里有39门比它高。中位数是29.36%,落在罗马尼亚语那一档。

换句话说,把这48门语言的访问量报表摊开,超过一半的语言,报表上每三次访问里就有一次不是人;最极端的那门,每十二次访问里只有一次是人。

如果你的判断依据是“访问量涨了20%”,那么在爬虫占七成的语言上,这个20%里有十四个点跟你的读者一点关系都没有。更麻烦的是这十四个点还会自己波动,抓取方换一次调度策略就够了。

完整对照表

下表按爬虫占比降序排,只列有代表性的一部分。页面数是截至2019年12月的累计新建内容页,设备数是2019年月均。

语言爬虫占比月均设备页面数真人/页/年爬虫/页/年
宿务语92.07%21526853319642.326.2
瓦瑞语85.47%8700212638879.455.2
约鲁巴语75.26%3744929421107.8328.1
土耳其语66.62%2963672329008947.81891.2
乌兹别克语65.75%672508130910356.2683.9
老挝语59.33%404783311753.51099.4
僧伽罗语49.40%22494219126671.8655.8
缅甸语37.08%25225247715435.7256.7
瑞典语35.82%120073642444970459.0256.2
高棉语35.22%24398090251185.5644.5
泰米尔语27.18%2574991125815920.5343.5
孟加拉语21.70%3341756772992632.0729.6
英语15.25%857711498580569115871.62857.0
印尼语12.44%352452485071113483.7495.1
泰语12.17%145191621210256559.6909.2
西班牙语9.23%18032456515479298112.2825.2

宿务语和瓦瑞语为什么会跑到最上面

这两门是菲律宾的地方语言,它们的维基版本在2013年前后被一套程序批量建过页面。宿务语累计有533万个内容页,比德语还多;瓦瑞语126万。

与之对应的读者规模是:宿务语月均21.5万台设备,瓦瑞语8.7万台。拿页面数除以设备数,宿务语是24.77,瓦瑞语14.53。

这个比值意味着什么?平均每来一台设备,站上就有二十四个页面在等着被抓。抓取程序不会因为没人看就不来,它按页面数来。这就像一家开在无人区的仓库,客人一年来不了几个,可盘点的人每个月都得把货架从头走到尾。

结果就是那两个九十几和八十几的数字。这不是“小语种没人看”,是“页面被造得太多”,两件事不一样,后面会专门拆开。

老挝语和僧伽罗语在这张表上的位置很有意思

老挝语的页面数只有3311个,全表最少,读者也最少(月均4万台设备)。它的爬虫占比是59.33%,排第九。

僧伽罗语页面19126个、设备22.5万台,爬虫占比49.40%。高棉语页面9025个、设备24.4万台,占比35.22%。

这三门是真正意义上的小语种——没被程序灌过,页面都是人建的,量也确实少。它们的爬虫占比在35%到60%之间,比英语高,但离宿务语那种九十几差得远。按母语人口给语言排优先级那套老办法在这里也帮不上忙,因为决定这个数的是页面和读者的比,不是读者的绝对量。

所以爬虫占比这个数不能反过来当“这门语言有多小”来读。它读出来的是页面数和读者数的比,不是读者数本身。

这张表里最反直觉的一行

土耳其语。爬虫占比66.62%,排第四,夹在乌兹别克语和格鲁吉亚语中间。

但土耳其语不是小语种。它月均有296万台设备来读,页面数32.9万,页面除设备只有0.11——这个比值跟希腊语、匈牙利语是一档的,而那两门的爬虫占比分别是20.04%和29.10%。

按前面那套解释,土耳其语应该落在20%到30%之间才对。它高出去了三十多个百分点。

第一反应是数据错了。查下来不是数据错,是这门语言在这段时间里发生了一件别的事——而这件事恰好把整篇文章想证明的那个机制,做成了一个可以直接验证的对照实验。

有没有哪个地方能证明爬虫跟读者根本无关?

把土耳其语拆成逐月来看

整年的汇总数看不出名堂,拆成54个月就一目了然。2015年7月到2017年4月,爬虫占比一直在17%到29%之间晃,跟一门正常的中型语言没有区别。

2017年4月是20.23%。2017年5月,56.13%。

一个月之内跳了三十六个百分点,之后再没回来过:2017年下半年在55%到67%之间,2018年全年在56%到70%,2019年前十一个月稳定在64%上下。

中间没有过渡,就是一个月的事。一门语言的流量结构在三十天里换了个样子,而这门语言的页面、内容、技术栈一样都没动过。

那个月发生了什么

2017年4月29日,维基百科在土耳其境内被整体屏蔽。这次封锁的起止时间有完整记录,一直持续到2019年12月26日当地宪法法院裁定违宪才解除。

屏蔽的是境内用户的访问。土耳其语维基本身一个页面没少,服务器照常在线,站外的抓取程序照常能连上。

换句话说,这是一次有人替我们做完的对照实验:控制变量是页面数量和站点可达性,被动的变量是读者。

而且它的干净程度超出预期——不是缓慢流失,是一夜之间断掉大半。做数据分析很少能碰上这么利落的断点,通常我们只能在一堆缓慢漂移里猜哪个是原因。

分子和分母各自动了多少

把封锁前后的月均值算出来对比。封锁前的21个月(2015年7月到2017年3月),月均真人访问1.574亿次,月均爬虫访问3992万次。

封锁中的31个月(2017年5月到2019年11月),月均真人访问3164万次,月均爬虫访问4049万次。

真人掉了79.9%。爬虫涨了1.4%。

比例从20.23%变成56.13%这件事,全部由分母贡献,分子几乎纹丝不动。抓取程序完全不知道、也完全不在乎这个国家的人还能不能打开这个站。

怎么排除这是口径变了

2017年前后维基媒体如果调过机器流量的判定规则,所有语言都会同时出现跳变,那这个发现就作废了。

拿英语做对照:2016年14.1%、2017年15.9%、2018年14.7%、2019年15.3%。四年之内在一个百分点半的区间里走,没有任何跳变。

再拿同期的德语、法语、西班牙语看,也都是平的。机器流量的判定规则本身是公开的,2015年定下来之后没有过影响可比性的大改。

所以那三十六个百分点只发生在土耳其语上,而且只发生在那一个月。这条排除做完,剩下的解释就只有一个了。

解封那个月的数也对得上

2019年12月26日解封。那个月的真人访问是2765万,跟封锁期的月均3164万差不多,没有回升。

这正是应该看到的——12月只有最后五天解封,用户回流需要时间,一个月的尾巴不足以体现。这条不算证据,但它没有反过来打脸,说明数据是自洽的。

真正的回升要看2020年的数,而本文的数据截到2019年12月,所以这一段就到这里。

把结论收窄一点:这个案例证明的是“读者塌了、爬虫不塌”,它没有证明反过来的方向。反方向要另找一个案例。

这件事对做站的人意味着什么

你的小语种站被墙、被限、被某个地区的运营商屏蔽,或者只是本地推广停了一个季度,报表上的总访问量都不会掉到你以为的那个程度。

因为撑着那个数字的另一半根本没走。它会让你晚三个月才发现出了事。

反过来,你上了一批新页面、访问量看着涨了,也可能只是抓取程序发现了新页面在跑一轮。收录、排名、流量这三层要分开诊断的老规矩在这里格外要紧。

唯一的办法是把这两拨分开看,而且从第一天就分开。等到出问题再去补拆,历史数据是拆不回来的——日志过期删掉之后,那几个月到底发生了什么就永远说不清了。

反过来看,读者暴涨的时候爬虫会跟着涨吗?

找一门读者在四年里翻了几倍的语言

土耳其语给的是分母塌掉的一半。要把机制说完整,还需要一个分母暴涨的案例。

这批数据里现成就有:2016年到2019年,印度那几门语言的读者数集体起飞,背景是当地移动数据资费在2016年底的那次崩塌式下降。

马拉地语是里面最典型的。2016年全年真人访问2893万次,2019年1.064亿次,涨了268%。

同期它的爬虫访问从4471万次变成2457万次,少了45%。

占比是怎么走的

马拉地语的爬虫占比:2016年60.7%、2017年44.0%、2018年22.6%、2019年18.8%。四年掉了42个百分点。

逐月看,2017年下半年到2018年上半年是主要的下坡段,跟真人访问的爬升期完全重合。

这跟土耳其语是同一个机制的镜像。那边是分子不动分母掉,这边是分母涨得比分子快。两边算出来的都是同一个比值在变。一升一降都指向同一个解释,这比只有一个方向的证据硬得多。

一升一降两个案例摆在一起,才能说这个比例是被读者规模推着走的,而不是被抓取行为推着走的。

不是所有印度语言都一样

同期的印地语真人涨286%,但爬虫也涨了122%,所以占比只从18.9%落到11.8%。泰米尔语真人涨170%、爬虫涨40%,占比从41.8%落到27.2%。

爬虫那一列为什么各不相同?因为这四年里这几门语言的页面数增长速度也不一样,而爬虫是跟着页面数走的。

马拉地语的爬虫访问之所以绝对值下降,跟它2013年前后那段批量建页的历史有关——早期那批页面被抓过一轮之后,抓取频率会自然衰减。

这一层的细节超出本文范围,但它提醒一件事:爬虫那一列自己也在动,只是它动的原因跟你的读者无关。它跟着页面数、页面的更新频率、以及存量内容的衰减节奏走。

四年趋势整体上不是单向的

开工前我写下的预期是“2016到2019年爬虫占比整体上升,因为抓取程序越来越多”。实测下来48门语言里27门升、21门降,这条预期是错的。

降得最多的五门是马拉地语(−42.0个百分点)、乌兹别克语(−18.2)、泰米尔语(−14.6)、高棉语(−13.3)、孟加拉语(−11.7),基本都是读者规模在这四年里快速扩张的市场。

升得最多的除了土耳其语,是格鲁吉亚语(+15.7)、尼泊尔语(+9.3)、俄语(+8.1)。

把升的和降的放在一起看,它们服从同一条规律:占比往哪边走,取决于读者数和页面数谁跑得快。这比“爬虫越来越多”那个说法要具体得多,也更好用——前者能算,后者只能感叹。

那这个比例到底由什么决定?

把两条线分开算

前面靠两个案例说了机制,现在用48门语言的横截面把它量出来。做法很简单,算三组相关系数,全部取以10为底的对数之后再算。

第一组:月均设备数对真人访问量,r等于0.992。

第二组:页面数对爬虫访问量,r等于0.920。

第三组:把页面数除以设备数得到一个比值,拿它对爬虫占比,r等于0.874。

0.992这个数意味着什么

真人访问量几乎完全由读者规模决定,48门语言无一例外。这听起来像废话,但它是整套推理的地基——它说明真人那一列是干净的,没有被别的东西污染。

要是这个数只有0.6,那说明真人那一列里还混着别的东西,后面所有的比值都不能信。先验地基再往上盖,是这类跨来源对比里省不掉的一步。

唯一设备数这个口径本身也值得说一句:它数的是一个月内有多少台不同的设备来过,用的是浏览器端的标记,跟访问次数是两个东西。拿它当读者规模的代理,比拿访问量自己当代理要干净。

两个独立来源的数据能对到0.992,说明这两个接口的口径是一致的。

0.920那一组说的是抓取预算

爬虫访问量跟页面数的关系,本质上就是抓取预算这件事在跨语言尺度上的样子。你有多少个地址,抓取程序就得来多少趟,这是它的工作方式决定的。

0.920不是1,差的那部分很关键——它说明抓取量不是页面数的严格倍数,中间还有别的因素在调节。那个因素是什么,下一节专门拆。

先记住这一半的结论:页面数是抓取量的第一驱动,读者数不是。

顺带说一句,这跟站长圈里流传的“内容多了搜索引擎就来得勤”是同一件事,只是这里给出了跨48门语言的量化版本。要注意的是“来得勤”说的是总趟数,不是每个页面被照顾到的次数,这两件事下一节会分开。

两条线一除,就是那个比例

既然真人跟着设备走、爬虫跟着页面走,那么爬虫占比自然就该跟着“页面数除以设备数”走。实测r等于0.874,双对数下0.816。

这个比值可以直接当一个可读的指标用。宿务语24.77,瓦瑞语14.53,约鲁巴语0.786,瑞典语0.204,老挝语0.082,英语0.007。

换成人话:宿务语平均每来一台设备,站上有二十五个页面等着被抓;英语是每来一千四百台设备才摊到一个页面。

差了三千五百倍。爬虫占比从92%到15%这个跨度,就是这三千五百倍算出来的。站点地图里到底放了多少个地址,在小语种站上因此变成一个远比英文站敏感的决定。

但这个模型不该被当成公式用

0.874是个不错的相关系数,可它离1还有距离,而且土耳其语这种被外力干预过的情况会整个跳出模型。

更要紧的是,这套数是在维基上量的。商业站的页面构成、外链密度、更新频率跟维基差别很大,抓取程序的行为也会跟着不同。

所以这个比值该怎么用?拿它做横向排序,判断哪几门语言的报表最不可信,这是稳的。拿它去反推“我的站爬虫应该占多少”,不稳。

要知道自己站上的真实比例,只能自己量,量法在后面那节。好消息是量一遍的成本很低,一份日志加半天时间。

爬虫是照着页数均匀抓的吗?

开工前我以为它是

预期写下来的时候是这么想的:抓取程序会定期重访每一个已知地址,所以“每个页面每年被抓多少次”这个数在各语言之间应该差不多,变异系数大概在0.5以下。

实测的结果是变异系数0.69,最小值和最大值差109倍。这条预期错了,而且错得很有内容。

最低的是宿务语,每个页面每年被抓26.2次;最高的是英语,2857次。

页面最多的那门语言,反而是每个页面被抓得最少的那门。

完整的分档

英语2857次、日语1749.8次、土耳其语1891.2次落在最上面一档;中间是绝大多数语言,在300到900之间;最下面是宿务语26.2、瓦瑞语55.2、豪萨语25.3。

注意这里的排序跟爬虫占比那张表几乎是反的。宿务语的爬虫占比全场最高,可它每个页面分到的抓取次数全场最低。

这两件事同时成立,因为它的页面实在太多——533万个页面,每个只抓26次,加起来还是1.4亿次,而真人只贡献了1201万次。

这个反转把“爬虫按页数来”这句话修正得更准确:爬虫的总量按页数来,但它分给每个页面的份额,会随着页面变多而变薄。前半句决定你的报表长什么样,后半句决定你的新内容多久被发现。

抓取程序也在挑

为什么会变薄?因为抓取本身是有成本的,任何一个抓取方都会给每个站分配一个上限。页面数超过这个上限之后,多出来的页面只能排队等更长的周期。

这正是抓取预算这个概念的本意,只是通常我们在单个站上讨论它,很少有机会看到它在跨语言尺度上的样子。

宿务语那533万个页面里,绝大多数是同一套模板批量生成的地名和物种条目。抓取方显然识别出了这类页面的更新频率极低,把重访周期拉得很长。

所以那个26.2次,不是抓取方不认识这些页面,是它认识了之后决定少来。这个判断是抓取方替你做的,你没有投票权,能改的只有页面本身。

这条对做站的直接含义

你的站上每多一批低价值页面,抓取程序不会给你追加预算,它会把原有的预算摊得更薄。结果是重要页面的重访周期变长,新内容被发现得更慢。

这个道理在英文站上讲了很多年,索引膨胀的诊断和处理是一整套成熟方法。小语种站的特殊之处在于,你的预算本来就更小,摊薄的后果来得更快。

还有一个只在小语种上成立的副作用:页面变多之后,报表上爬虫那一半会跟着变大,于是访问量看起来在涨。这个涨幅会把摊薄的坏消息盖住。

两件坏事凑在一起,看起来像一件好事。这大概是这份数据里最值得记住的一句。抓取程序这些年在渲染和调度上的变化只会让这个错觉更难识破,因为它让抓取行为看起来更像真人。

一个不该忽略的边界

上面这段推理用的是维基的数据,而维基的页面几乎都能被抓到、也几乎都在站点地图里。你的站如果有大量页面从来没被发现过,那些页面不在这个模型里。

另外维基的抓取方构成跟商业站不一样。它被学术采集、数据镜像、模型训练管线抓的比例更高,这些抓取方的行为跟搜索引擎不完全一致。

所以“每个页面每年被抓多少次”这个绝对数不要照搬。可以搬的是那个方向:页面变多,单页份额变少。

这一点在自己站上很容易验证,日志里按URL分组数一遍就知道。如果中位数比你以为的低一个数量级,那就是摊薄已经发生了。

换到你自己的站上,这几个数怎么量?

先量一个数:机器占比

取一个月的访问日志,按来源把请求分成两堆,算出机器那一堆占总请求数的比例。这是全部工作里最基础的一步,也是很多站从来没做过的一步。

分堆的判据按可靠度排:反向域名查询能验明正身的搜索引擎爬虫最硬,用户代理串里带明确标识的次之,行为特征(不加载静态资源、不执行脚本、请求节奏均匀)最后。

三档分开统计,别混成一个数。因为后面要看的是趋势,而三档的口径必须逐月一致。

这一步不需要任何工具,一段脚本加一个月的日志就够了。真正难的不是算,是把口径定下来之后别再改——口径一改,前面几个月的数就白存了。

再量一个数:页面数除以读者数

页面数取站点地图里的有效地址数,不是数据库里的记录数——没进站点地图的页面对抓取方来说基本不存在。

读者数取统计工具里的月度独立访客,不是访问次数。这两个数的比值就是前面那个指标在你站上的版本。

算出来之后跟这张表对一下位置。落在0.01那一档的,报表基本可信;落在0.2以上的,每次看数据都得先减掉机器那一半;落在1以上的,你站上的页面数已经超过读者规模能支撑的量了。

这个数每季度重算一次,看它往哪个方向走,比看绝对值有用。它往上走,说明你在造页面的速度超过了拉读者的速度,这件事在做批量落地页的团队里非常常见。

第三个数:单页抓取频次

把一个月的爬虫请求按URL分组,算出每个页面被抓了几次,然后看这个分布的中位数和四分位。

要看的不是平均值。平均值会被首页和几个热门页拉高,掩盖掉长尾那一大堆几个月才被抓一次的页面。

中位数落在个位数,说明预算已经摊得很薄。这时候再上新页面,只会让中位数继续往下走。

同时把没有任何爬虫记录的页面单独拉一张清单,这批页面对搜索引擎而言等于不存在。小语种站上这张清单往往比想象中长,而且长期没人查。

第四个数:真人访问的绝对量

前三个数都是比例和分布,最后要落回一个绝对数:这个月有多少个真人打开过你的小语种站。

把它单独立一列,跟总访问量并排放。做增长汇报的时候只看这一列,别看总数。

这一列可能会很难看。中东欧那个站拆完之后,真人月访问从四万变成一万六,看板上的曲线直接矮了一截。

但矮下去的那一截本来就不是你的读者,早看到早调整。那次拆完之后我们把预算从新增页面挪到了本地渠道投放,三个月后真人那一列涨了六成,总访问量反而只涨了一成——因为爬虫那一半没跟着动。

做完之后先别急着下结论

这四个数只是把现状拍下来,它们不告诉你该做什么。同样是机器占比60%,两种情况的处理完全相反。

一种是页面数正常、读者确实少,那问题在需求侧,该做的是重新看这个市场的搜索意图分布,而不是砍页面。

另一种是读者规模其实不小、页面被造得太多,那问题在供给侧,该做的是清理和合并。

分辨这两种情况,靠的就是第二个数:页面数除以读者数。这也是为什么它比机器占比本身更该被放进报表。关键词工具在小语种上返回的零也要放在一起读,工具没数据不等于需求不存在。

一个可以半天跑完的清单

第一步,拉最近三个月的日志,按上面三档判据分堆,得到逐月的机器占比。

第二步,数站点地图里的有效地址,除以统计工具里的月度独立访客。

第三步,爬虫请求按URL分组,出中位数、四分位,以及零抓取页面清单。

第四步,把真人访问量单独立一列加进现有看板,往前补三个月的历史。四步做完,半天。

报表和日志该怎么改才不骗人?

看板上要加的那一列

现有的访问量那一列不要删,在它旁边加一列真人访问量,再加一列机器占比。三列并排,趋势一眼就能看出来。

加这一列的阻力通常不在技术上,在于它会让历史数据变难看。得先跟看这份报表的人讲清楚,数字变小不是业务掉了,是尺子换准了。

这件事越早做越好。做得越晚,历史曲线的落差越大,越难解释。

如果实在不能改主看板,至少在月度复盘里单独出一张。一张多出来的图,比一次口头解释管用得多。

按语言分开看,别汇总

多语言站最容易犯的错是把所有语言版本的流量加成一个总数。加完之后,英语站那一大坨会把小语种版本的异常完全淹掉。

正确的做法是每个语言版本一行,各自带自己的机器占比。这样某一门语言出问题的时候,你能在第一个月看见。

这跟多语言站的目录与标注结构是配套的:结构上分得清,数据上才拆得开。

结构没分清的站,这一步做不了,得先把结构补上。这也是为什么目录结构和数据结构该在同一天定下来。

报警阈值该设在哪儿

机器占比本身不适合当报警指标,因为它在小语种上天然就高。适合报警的是它的变化速度。

一个月之内动超过十个百分点,不管往哪边动,都值得查一遍。土耳其语那次是三十六个点,属于极端情况;正常波动一般在三个点以内。

另一个值得报警的是真人访问量的绝对值。它掉三成的时候,总访问量可能只掉一成,后者不会触发任何告警。

把告警挂在真人那一列上,不要挂在总数上。总数是两拨人加出来的,它的平稳可能只是两边正好互相抵消。

日志保留期限得跟着调

要看趋势就得有历史。很多站的日志只留三十天,那么等你发现要拆分的时候,能拆的只有当月。

建议至少留十三个月,能覆盖一个完整的同比周期。存储成本比想象的低,压缩之后一个中等规模的站一年也就几十G。

如果实在留不了原始日志,至少把逐日的分堆汇总数存下来,字段就四个:日期、总请求、机器请求、真人请求。

这四个字段一天一行,十年也才三千多行。存在一张表里,将来要复盘任何一次波动都够用。

别把机器流量当敌人

拆分不等于要拦截。搜索引擎的抓取程序来得勤是好事,说明你的页面被当回事了。这篇讲的是别把它算进读者,不是让你去封它。

真正该拦的是另一类:那些既不带来收录、也不遵守爬虫排除协议、还把服务器打满的采集脚本。拦它们的判据是服务器成本,不是流量报表。

把这两件事混在一起,很容易做出“为了让报表好看去封爬虫”这种自伤操作。

报表的问题用报表的办法解决,服务器的问题用服务器的办法解决。把它们混成一件事,是这个话题上最常见的自伤操作。

哪几件事这一层管不了?

页面级的分布不归这一层

本文所有的数都是整门语言的汇总。它能告诉你“这门语言有三成访问不是人”,告诉不了你“具体是哪三千个页面在被反复抓、又是哪三万个页面一年没人打开”。

那件事得用另一套办法量——随机抽样加逐页查,而且得先解决“这个页面在观测期内到底存不存在”这个前置问题。

汇总数和分布是两层,混着看会得出很奇怪的结论。比如一门语言的平均每页真人访问是459次,听起来还行,可它的中位数完全可能是个位数。

这一层留给后面单独写。可以先记住一个提示:汇总数看起来还行的语言,分布可能已经很难看了。

抓取程序的识别方法不归这一层

怎么反查一个自称Googlebot的请求是不是真的、怎么处理伪装成浏览器的采集脚本、哪些SEO工具的探针要不要算进来——这些都是站点自己的工程活。

它们跟这门语言是什么完全无关,英文站和老挝语站的做法一模一样。

本文默认你已经能把请求分成两堆,只讨论分完之后怎么读。

分堆本身的方法在日志分析那一层,已经有很成熟的做法,照着做就行,不用为小语种另起一套。

搜索引擎侧的收录判断不归这一层

爬虫来过不等于收录,收录不等于有排名。这三件事在小语种上尤其容易脱节,因为中间还夹着语言识别、编码解析这些额外的环节。

被抓了几次这个数,只能回答链路的第一段。后面两段得看搜索控制台那边的数据,跟日志是两个来源。

抓取、索引、排名这三段的分工是老话题了,本文不重复。

要提醒的只有一句:小语种站上这三段的衰减比英文站陡,每一段都得单独量。多语言模型铺开之后,语言识别这一环的失败率降了不少,但它并没有改变抓取和收录之间的脱节。

这份数据本身的边界

最后把话说回来。这48门语言的数据全部来自维基百科,它跟你的商业站有三个明显的差异:页面构成不同、外链结构不同、抓取方构成不同。

所以本文的绝对数值不要照搬,可以搬的是三样东西:那个机制(爬虫按页数、真人按人数)、那个可比指标(页面数除以读者数)、以及那套自查流程。

还有一件事值得单独说:页面浏览的正式定义里明确排除了一些请求类型,跟你的统计工具的口径不完全一致。跨来源比数字的时候要留神。

把这些边界摆清楚之后,剩下的那部分是稳的:一门语言的报表可信度,可以在动手之前就估出来。只要你知道这门语言大概有多少读者、你打算建多少个页面。

常见问题解答

机器占比多少算正常?

没有一个通用的正常值,它取决于你的页面数和读者规模的比。本文这48门语言从9.23%铺到92.07%,中位数29.36%,跨度太大,拿中位数当标准没有意义。

可以用的判据是自己跟自己比:算出页面数除以月度独立访客这个比值,落在0.01量级的站,机器占比通常在10%到20%;落在0.2以上的,三成起步。

更该关注的是变化速度。一个月之内动超过十个百分点,说明有事发生了。

为什么不直接用统计代码的数据,非要看日志?

统计代码要靠浏览器执行脚本才会上报,绝大多数抓取程序不执行脚本,所以它统计到的本来就基本是真人。这听起来是好事,其实是坏事——你根本看不到机器那一半有多大。

日志记的是每一个到达服务器的请求,两拨都在里面。要拆分就必须用日志。

正确的用法是两边都用:统计代码看真人的行为,日志看两拨的比例。页面迟迟不被收录的排查也得靠日志起手,统计代码在那个场景里同样是瞎的。

爬虫占比高,是不是说明这门语言不值得做?

不能这么读。爬虫占比高只说明页面数和读者数的比值高,它可能是读者少,也可能是页面被造多了,两种情况的对策完全相反。

老挝语的爬虫占比59.33%,可它的页面只有3311个,读者少是事实但页面一点不多。宿务语92.07%,页面533万个,问题完全在另一头。

先分辨是哪一种,再决定做不做。

土耳其那个案例,会不会只是巧合?

时间点对得太准,很难用巧合解释:跳变发生在封锁开始的当月,而且是从20.23%到56.13%这种量级,之后31个月没回来过。

更关键的是分子和分母的表现是分开的——真人掉79.9%、爬虫涨1.4%。如果是统计口径变了,两边应该一起变。

再加上同期英语、德语、法语、西班牙语全部平稳,这个跳变只发生在一门语言上。三条合起来,巧合的概率很低。

页面数除以读者数这个指标,多大算危险?

按本文这48门语言的分布,可以粗略分三档:0.05以下的报表基本可信,0.05到0.5之间需要每次减掉机器那一半再看,0.5以上说明页面规模已经超过读者能支撑的量。

超过1的只有宿务语和瓦瑞语两门,它们的页面都是程序批量建的。正常经营的站很难走到那一步。

但如果你在做自动生成的城市页、组合页、筛选页,这个数会涨得比想象快。

已经在用现成的分析工具,还需要自己拆日志吗?

取决于工具给不给你按来源分组的原始数据。大多数商业分析工具给的是清洗过的结果,清洗规则不公开,而且各家不一致。

要横向比较不同月份、不同语言版本,口径必须自己控制。这是自己拆的主要理由,不是因为工具不准。

如果只看一门语言的单月数字,用工具就够了。

这套方法在中文市场用得上吗?

用得上,而且中文市场有它自己的版本。中文站的抓取方构成跟英文站不一样,除了几家搜索引擎,还有数量可观的内容采集脚本。

页面数除以读者数这个比值照样能算,判读方式也一样。差别在于绝对数会更高一些,因为采集脚本的基数大。

那套四步自查流程可以原样搬过来,不用改。唯一要调的是分堆的判据表,得把本地那几家搜索引擎和常见采集脚本的特征补进去。

权威参考资料

分享到
标签
版权声明

本文标题:《小语种SEO的访问量里有一半不是人,48门语言量下来最高的那门到92%》

本文链接:https://zhangwenbao.com/minor-language-crawler-share-traffic-report.html

版权声明:本文原创,转载与引用请注明作者与原文链接。许可协议: CC BY 4.0

继续阅读
发表评论
分享到微信 或在下方手动填写
支持 Ctrl + Enter 提交