我有一个页面,当使用javascript函数加载页面时,在某些链接中构建链接,具体取决于页面的当前URL。单击时,ajax调用将加载新页面。
如何将这些链接设为google-crawlable(因为Google不会抓取javascript链接)?
作为一个例子,我想提一下github。因此,当您打开时,https://github.com/pennersr/django-allauth内部的所有链接都已加载了各自的链接,具体取决于当前的URL。当您查看源代码时,可以看到其中的链接。虽然你只是在view-source中看到一个javascript函数,但链接是通过javascript创建的。我不认为这些值也是从后端传递的。
这样做有什么可行的解决方案?
答案 0 :(得分:1)
这是单页应用程序或使用密集型JavaScript和AJAX的应用程序中的常见问题。
首先,您需要在JavaScript中为此操作创建唯一的URL,因此抓取工具至少可以“点击这些操作”。如果您在JavaScript中执行某项功能,但您的网址未发生变化,Google将永远无法知道其中发生了什么。 通常,AJAX URL的编写方式如下:
http://www.foo.com!#jsAction
Google抓取工具可以抓取此网址,但可能会返回的网页可能是空白的,因为JavaScript代码负责呈现所有内容。
这就是为什么爬虫会在调用您的服务器时更改单词_escaped_fragment_的'!#'。因此,抓取工具请求的先前网址为:
http://www.foo.com?_escaped_fragment_=jsAction
通过URL中的这个新关键字,我们可以在服务器中确定请求来自爬虫,这就是魔术开始的时候。 使用像PhantomJS这样的无头浏览器,我们可以在服务器中执行JavaScript代码,并将完全呈现的HTML返回给爬虫请求。这是Google在其指南中提出的方法之一。
所以基本上重点是确定你获得哪种类型的请求并执行不同的代码,具体取决于查询字符串是否包含_escaped_fragment _。
Google提供的这个链接可能会帮助您指出正确的方向:https://developers.google.com/webmasters/ajax-crawling/
希望它有所帮助!