发表者: Pawel Aleksander Fedorynski 索引团队软件工程师;Maile Ohye 开发人员项目技术指导
随着网络的发展,谷歌的抓取和索引能力也需要与时俱进。我们改善了flash索引,建立了一个更加强大的Caffeine系统, 我们甚至绘制了抓取表单。现在,特别当JavaScript和AJAX日渐普及后,我们发现越来越多的网页需要POST请求——因为网页的全部内容或因为有些网页信息缺失以及/或者POST无法返回资源而使网页无法显示。对于谷歌搜索来说,出现这一现象并不理想,因为如果我们没有正确地搜寻和索引内容,便无法呈现最全面、准确的结果。
通常情况下,我们建议使用GET来抓取网页所需资源,这是至今为止我们找到的最好的抓取方法。我们做过一些实验,将POST请求重新写入GET,在某些情形下,这是一种有效策略。一般说来,网络服务器从GET和POST返回的结果是完全不同的。另外,使用POST还有一些合理的原因(比如使用过程中,比起GET,在POST请求中可以附加的数据更多)。因此,虽然GET请求仍然更普遍,但为了从网页上获取更多内容,Googlebot会执行POST请求,因为我们认为它既安全又合适。
为了避免在网站上执行任务而导致用户任何意想不到的操作,我们采取了一定的措施。POST主要是用来抓取与网页自动请求相关的资源,模仿一个普通用户在浏览器中打开网址所看到的内容。随着时间推移,我们会逐步发现更好的模式,但目前我们还是用这一方法。
下面我们来看一些POST请求脚本,来说明我们如何随着网络的发展而改进信息抓取和索引功能的。
Googlebot的POST请求范例
1. 谷歌抓取到网址,yummy-sundae.html.
2. 谷歌开始索引yummy-sundae.html,在此过程中,尝试渲染页面以便更好地理解内容以及/或者产生即时预览。
3. 在渲染过程中,yummy-sundae.html使用POST方法,自动发送一条XMLHttp请求资源,hot-fudge-info.html.
4. 通过POST请求得到的网址 hot-fudge-info.html,和其数据负载一起添加到Googlebot的抓取队列里。
5. Googlebot执行一个POST请求抓取hot-fudge-info.html网页信息。
6. 现在谷歌准确地呈现出一个可供即时预览的yummy-sundae.html网址。在某些情形下,我们还可以将 hot-fudge-info.htm网址内容合并在 yummy-sundae.html网址中。
7. 谷歌完成yummy-sundae.html网址的索引。
8. 用户搜索 [hot fudge sundae]。
9. 现在谷歌算法能够更好地确定yummy-sundae.html与此请求的相关度,我们能够恰当地呈现网页快照来提供即时预览。
提高您网站的抓取和索引能力
在我们的网站站长工具帮助可以找到建立可抓取网页的常规建议。对于那些想帮助谷歌抓取和索引他们的网站内容以及/或者产生即时预览的网络管理员,以下建议可供参考:
为了核实你没有不经意地隐藏真实内容,你可以使用网站管理员工具中的即时预览,或者在浏览器中将你的用户-代理字符串设置成如下:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
如此改动后,网页应该没有任何变化。如果你看到一个空白页,JavaScript错误,或者如果页面有一部分消失或者出现变化,就存在问题了。
控制你的内容
如果你想要阻止网页内容被谷歌网络搜索抓取或索引到,最好的办法是用传统的robots.txt 文件指令。
未来趋势
我们将继续努力,使我们的检索更加全面,以便搜索者能查到更多相关信息。我们希望我们的收集和检索能力随着时间逐步提高,如同网络本身在不断提高一样。如有疑问或问题,请与我们联系。