昨天,在查看谷歌站长工具Google Search Console时,意外发现一条“无法解析的结构化数据”。
提示类型:解析错误:缺少“,”或“}”。问了一下度娘,也没有找到答案。那只能自己动手解决了,让我们一起来看看,到底是怎么回事呢?
首先,我们一些看看谷歌站长工具“无法解析的结构化数据”所涵盖的错误类型:
错误类型 说明 JSON 文档无效 JSON 存在顶级语法错误。 值类型不正确 为某资源指定的值的类型有误。例如,当本应指定数字或数组时,您却指定了字符串。 解析错误:缺少“:” 缺少“:”标记。 解析错误:缺少“,”或“}” 缺少“,”或右括号。 解析错误:缺少“}”或对象成员名称 缺少右括号或对象成员名称。 解析错误:数组声明中缺少“,”或“]” 解析数组值时出错:数组声明中缺少“,”或“]” 无法解析令牌长度 由于某种原因,找不到某资源或某值的开头和结尾。 数值无效 资源值本应为数值,但却使用了另一值类型。 字符串中的转义序列是空的 字符串值包含空的转义序列字符。例如: “description” : “Call me \ John”
而非
“description” : “Call me \”John\””.
字符串中的转义序列无效 字符串值中使用了无效的转义序列。例如: “description” : “Some \q unknown sequence”
Unicode 字符被截断了 缺少 Unicode 代理对末尾处的 6 个字符。 Unicode 字符无效 缺少 Unicode 代理对后半部分开头处的 \u 令牌。 Unicode 转义序列无效:应为 4 位数字 Unicode 转义序列存在语法错误:应含 4 位数字。 Unicode 转义序列无效:应为 16 进制数字 Unicode 转义序列存在语法错误:并未提供应有的 16 进制数字。 本应独一无二的资源重复出现了 您为结构化数据对象中的某个独一无二的资源提供了两个定义。例如,两个 @context 值。 顶级元素无效 您的 JSON-LD 中的顶级项目无效。 所引用的内容不存在 itemref 属性指向不存在的标识符。 以上摘抄于谷歌站长工具文档:https://support.google.com/webmasters/answer/9166415#error_types
如上,我们看到错误类型很多,May在这里就不再一一列举如何去解决。下面以May遇到的“无法解析的结构化数据”解析错误:缺少“,”或“}”为例,来帮助大家给出一些解决问题的思路。
Step 1. 找到错误的页面
谷歌站长工具会列举出有问题的网页链接,如下:
Step 2. 结构化数据测试工具
在https://search.google.com/structured-data/testing-tool输入报错的网址进行检测。
检测具体是哪里的代码有问题,从上图可以看出第173行的代码报错。
Step 3. 再检查网站上其他页面是否也报错
按照Step 2的步骤,查询一下网站上的其他页面是否也有这样的报错,虽然谷歌站长工具目前只检测到这一个页面有问题;咱还是可以自己来检测一下是否其他页面也存在同样的问题,方便我们能锁定到底是一个页面的问题,还是整个网站的网页都存在问题。
May在网站上随机抽取了几个页面来做测试,发现都是同样的报错,报错的位置也一样。这就说明很有可能整个网站所有网页都附加了这段代码。
Step 4. 分析报错代码
通过对MAY的SEO博客报错代码的进一步分析,发现是百度搜索资源平台移动专区链接自动提交的代码,虽然我不会修改代码,但是能勉勉强强能检查这段代码的语法,也不像谷歌站长工具提示所说的:缺少“,”或“}”,这就纳闷了,唯一解释得通的就是这段代码很有可能谷歌不能很好地识别,才会出现这样的报错。
Step 5. 修改或删除报错代码
既然找到了问题所在,如果你有修改代码的能力,那最好了,直接将代码修改正确;
如果你不会修改代码,一定要分析清楚这段代码有什么功能:
①. 自己能力有限,实在是分析不出是什么代码,就请专业的技术人员来分析;
②. 自己能分析清楚这段代码的功能,删除会对自己的网站有一定的影响,这时候就需要自己来做权衡,是否需要找专业人士来修改这段代码;或直接删除这段代码;或保留这段代码而直接忽视谷歌站长工具上的报错;
③. 自己能分析清楚这段代码的功能,对网站无任何实际的作用,那就果断删除;
MAY的SEO博客上的报错的原因是“百度搜索资源平台移动专区链接自动提交”代码,这时候也需要May来做一个权衡,最后May选择删除掉这段代码。再去检测,果然不再报错了。
也许是“眼里容不得沙子”吧,遇到各种报错,总要一探究竟,以上就是我的解决思路,仅供大家参考。