Google的抓取工具是否会翻译Javascript? 如果我通过AJAX加载页面怎么办?

当用户进入我的页面时,我不得不做另一个AJAX调用…来加载一个div内的数据。 这就是我的应用程序的工作原理。

问题是…当我查看这个代码的来源,它不包含该AJAX的来源。 当然,当我做wget的URL …它也不显示AJAX的HTML。 说得通。

但是Google呢? Google能够抓取内容,就好像它是浏览器一样? 如何让Google抓取我的网页,就像用户看到的一样?

更新:从关于“Ajax生成的内容,抓取和黑名单”这个问题的答案我发现这个文档关于Google抓取AJAX请求的方式 ,这是关于使AJAX应用程序可抓取文档集合的一部分。

总之,这意味着您需要使用<a href="#!data">...</a>而不是<a href="#data">...</a> ,然后提供真实的服务器- URL path/to/path?_escaped_fragment_=data答案path/to/path?_escaped_fragment_=data

还要考虑一个<link/>标签,以提供search引擎友好的内容的提示。 <link rel="canonical"/> , 这篇文章解释了一下,是个不错的select

注意:我从以下答案: https : //stackoverflow.com/questions/10006825/search-engine-misunderstanting/10006925#comment12792862_10006925,因为它似乎我不能删除我在这里。

尽pipe上面的答案,显然它解释JavaScript,在一定程度上, 根据马特卡茨 :

“有一段时间,我们在JavaScript中扫描,我们正在寻找链接,Google已经变得更聪明,可以执行一些JavaScript,我不会说我们执行所有的JavaScript,所以我们有一些条件不会执行JavaScript,当然还有一些常见的,像Google Analytics一样的JavaScript,你甚至不想执行,因为你不想试图从Googlebot中产生幽灵访问到你的Google Analytics中。

(为什么回答一个回答的问题?主要是因为我刚刚看到它,因为今天发布了一个重复的问题,并没有在这里看到这个信息。)

其实… Google确实有抓取Ajax应用程序的解决scheme…

http://code.google.com/web/ajaxcrawling/docs/getting-started.html

我在这种情况下所做的总是最初使用基于Ajax调用的默认参数的内容填充页面。 然后,我只使用Ajax的JavaScript做更新的页面。

正如其他答案所说,Google的抓取工具(我相信其他search引擎的抓取工具)不会解释Javascript, 也不应该试图通过用户代理或类似的方式进行区分(可能导致您的网站降级或被阻止进行呈现用户与机器人不同的内容)。 相反,不pipe出于什么原因(包括原因是“作为机器人”的情况),向浏览提供一些(可能是最小的)内容级别 – 毕竟这就是noscript标签存在的原因。 ..使非常, 非常容易提供这样的“最低水平的内容”(或者,如果你这么select,如果你这样select,超过最低限度!),非JavaScript的用户!

networking爬虫有一个困难的时间与Ajax和JavaScriptdynamic加载内容。 这个网站有一些想法,告诉你如何帮助谷歌索引您的网站http://www.softwaredeveloper.com/features/google-ajax-play-nice-061907/

如果你的页面是这样的,那么他们就可以在不使用javascript的情况下工作(也就是说,如果javascript失败,使用框架或标准的GET / POST请求到服务器,或者自动地或者通过“显示为纯HTML”链接)search引擎抓取页面会容易得多。

对他们来说, 不要抓取“dynamic”的内容是有道理的 – 因为它只是…dynamic的。

我的理解是,在大多数情况下,Google不会抓取客户端的dynamic内容。

现在看起来像谷歌机器人不仅限于简单的lynx like像浏览器。

谷歌机器人试图抓住人类Humanly visibleHumanly contrasting文本,在页面的不同部门给予重视。 所以它使用Layout Engine呈现页面,就像FF或Chrome等其他浏览器一样。

它甚至可能有v8 JavaScript引擎支持。 机器人可能会加载页面,等待dom ready ,甚至可能等待几秒钟,以使页面达到稳定的视图。 然后裁剪对比文本。