【百度 SEO】剖析–百度/谷歌蜘蛛能不能抓取AJAX 的内容信息

Share

如今,纯静态的网站已经相当少了,动态的网站是主流,很多开发者为了方便用户浏览网站,减少用户连接跳转,所以广泛使用 ajax 来展现信息流。那么这个基于 js 使内容丰富和交互式 ajax 为基础的功能对于 SEO 有怎样的影响呢?这就是这篇文章讨论的话题。

 

首先,但从功能性上看,ajax 是非常好用的,减少了用户的浏览成本,不用在网页间来回跳,但是对于 SEO 而言其实是不太友好的,因为百度这块对这类的说明文档很少,所以我就简单从 Google 的技术文档来说一下,英文基础好的同学可以来看一下以下说明:

 

【百度 SEO】剖析--百度/谷歌蜘蛛能不能抓取AJAX 的内容信息

 

看到了吗?这篇文档是发自于2015年,也就是说 Google 在前几年工程师是尝试了这个办法,但是搜索引擎蜘蛛处理的效率是不高的,于是官方在2015年正式弃用了这个技术,他们是怎么做的呢?我大致翻译了一下,思路是这样的:因为 AJAX 内容是由浏览器动态生成的,基于 ajax 的应用程序填充内容,取代了原有的静态 HTML 页面,因此爬虫无法高效率的提取信息。Google SEO 工程师们认为浏览器可以执行 JavaScript 并动态生成内容,而爬虫不能。所以为了让爬虫程序看到用户看到的内容,服务器需要给爬虫程序一个 HTML 快照,也就是在页面上执行 JavaScript 的结果。大概是这样做的: 它允许站点所有者自己的 web 服务器返回到应用程序页面的这个从静态内容片段创建或者通过执行 JavaScript 创建的 HTML,这就是我们所说的 HTML 快照。可能大家不太好理解,大致的过程,就是这些大佬想通过技术手段,从这些动态内容中提取静态内容的HTML快照,供蜘蛛们识别……

 

步骤:

1、Slightly modify the URL fragments for stateful AJAX pages(修改 AJAX 页面路径 URL 片段)

 

意思是说一旦你在 URL 中使用了 hashbang,Google 就会发现你在遵循他们的协议,并以一种特殊的方式解析你的 URL ——他们会在 hashbang 之后获取所有内容,并将其作为 URL 参数传递给网站,它们用于参数的名称是: _escaped_fragment_

 

然后,Google 会重写 URL (301),并从静态页面请求内容。为了展示重写后的 url 是什么样子,这里举个例子:

 

 

www.rrdaj.com/#!seattle/seo1

301 >

www.rrdaj.com/?_escaped_fragment=seo1

 

www.rrdaj.com/users#!name=seo2

301 >

www.rrdaj.com/users?_escaped_fragment_= name=seo2

 

 

2、Use a headless browser that outputs an HTML snapshot on your web server (在你的 web 服务器上输出 HTML 快照)

 

只有经过 Google 特殊标记的 AJAX 页面 url 才会传递给浏览器进行处理。通过这个方式,网站所有者可以控制生成的 HTML 代码,并可以很容易地验证所有 JavaScript 是否正确执行。这种浏览器,谷歌称之为The headless browser, 比如 HtmlUnit ,它是一个开源的 Java 浏览器。

 

当然了,这只是两个基本的步骤,里面的细节很多很多,有兴趣的童鞋,可以多去看资料,虽然现在不用了,但是看了后,不得不惊叹 Google 工程师厉害的地方!说了理论,接下来,我就按耐不住我的好奇心了,去做了实验,看看是不是真的抓不了了,多说无益,上图:

 

Googlebot 抓取结果

 

【百度 SEO】剖析--百度/谷歌蜘蛛能不能抓取AJAX 的内容信息

 

百度spider 抓取结果

 

【百度 SEO】剖析--百度/谷歌蜘蛛能不能抓取AJAX 的内容信息

 

结果就是抓取是可以的,但是提取信息是失败的,说明这些搜索引擎是没办法提取这些内容的,源代码都很简单,里面隐藏的信息没办法弄出来……所以,网站使用 ajax 可以用在功能上,但千万别用作于信息输出,对于Google 和 百度搜索引擎 SEO 来说,是不太理想的!!

    版权声明:

     本网站的所有文字、图片资料,【未注明转载的】均由作者亲自整理创作,任何媒体、网站或个人未经本人同意和授权不得复制、转载、转贴或以其他方式复制发布/发表,请尊重我的劳动成果,侵权必究,谢谢。