这些天升级了下博客的UI界面风格,由于好久没更新所以网站更新完就顺带去bing搜索的站长后台测试了下页面的抓取页面情况,然后就发现大部分页面在bing搜索的蜘蛛抓取后页面里的中文就成了看不懂的字符(其实也不是乱码 就是中文全部被转义成unicode字符),而且这些页面的html结构也出现了不闭合的情况,导致站长后台的蜘蛛抓取工具抓取后无法按照正常的html进行解析预览(如下图),但奇葩的是部分网页却是正常的。
有问题时抓取效果
折腾许久通过排除法一点一点的删除页面代码测试,最终才发现是带有markdown内容页输出文本转成html后再传入预览组件时就会出现这个情况,需要注意的是这个问题只有通过站长后台才能看出来,正常通过浏览器访问和其他三方模拟工具抓取确没有这个问题的(以前做百度玩的时候也有类似的情况)。
正常后抓取的效果
为什么中文被转义unicode
核心原因:子组件渲染时的 HTML 实体会自动转义
Blazor 默认会对组件输出的文本进行 HTML 转义(防止 XSS),即把特殊字符(包括中文在特定场景下)转为实体编码(如
xx;)。若子组件通过@ChildContent或参数传递中文内容,且未显式禁用转义,Blazor 会自动对非 ASCII 字符进行转义。
解决网页中文被转义的方法
子组件页面在输出html的时候 做一次解码System.Web.HttpUtility.HtmlDecode(this.Html)
@((MarkupString)System.Web.HttpUtility.HtmlDecode(this.Html))
是否对网页的收录有影响
目前站长感觉是有的,之前也知道这个事情但一直没找到解决办法就没管,明显的感觉原有的几个热门页面被下架或者流量下跌,今天顺带测试看了下这几个页面也都是这个情况,大概率是搜索引擎蜘蛛也不喜欢(或直接无法解析)。