缘起
本站于2011年7月改版,采用Bootstrap布局,自动适配移动端。发布上线之后,发现有些新文章与作品一直不被百度收录,心中疑惑不解,但由于杂事缠(lan)身(duo),就没去跟踪与处理了。
最近朋友告诉我,在百度搜索tcdos
关键词,竟然搜索不到本站了。问题严重了,得解决。
解惑
首先,登录百度搜索资源平台,提交资源,包括sitemap.txt、sitemap.xml等。推荐使用API提交,采用curl
方式。
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=www.tcdos.com&token=s8Qiu4Wx42jXs2i3
然后,耐心等待百度爬虫采集,一般需要24h以上。最后,结果出来了。
Xml解析失败
看了错误提示,说存在两个问题,原来百度不收录真的是有理由的。
- 页面存在不合法的元素名
<img>
没有闭合,站点采用的是Markdown编辑器,上传图片之后在编辑器中插入的图片标签没有闭合。
- JS中也存在不合法的元素名
在实现图片展示交互中,需要获取图片的真实大小,使用 onlod
方法来实现,代码如下:
var imgOrigW, imgOrigH;
$("<img />").attr("src", imgUrl).on("load", function () {
that.imgOrigW = this.width;
that.imgOrigH = this.height;
});
爬虫提示问题代码为“$("<img />")
”,不知为何。只能如下修改:
var imgOrigW, imgOrigH;
var oImg = new Image();
$(oImg).attr("src", imgUrl).on("load", function () {
that.imgOrigW = this.width;
that.imgOrigH = this.height;
});
记录一个细节,在更新时,我把上述错误代码注释,爬虫仍会提示解析失败,必须要删除代码。
当然,基于HTML5的属性,可以使用 naturalWidth
和 naturalHeight
。但是获取异常,一直为 0
。下次再研。
网站更新上线了,先观察一阵子,看看效果如何吧。
上述情况证明,百度对收录还是把关很严格的。我在 cn.bing.com
搜索了一下,发现网站收录一切正常 :)
跟踪
截止2022/12/15,百度还是未收录。问客服,客服回复说收录正常。