适用于Google Ajax Crawlable规范的纯JavaScript解决方案

Rob*_*Rob 6 ajax web-crawler node.js zombie.js

我有一个基于JavaScript的项目(例如node.js,backbone.js等).我正在使用/#!/ about这样的hashbang网址并阅读了google ajax可抓取规范.我已经用僵尸进行了一些无头的UI测试,并且可以通过设置稍微的延迟并将静态内容返回到谷歌机器人来轻松设想如何做到这一点.但我真的不想从头开始实现这一点,并希望有一个适用于我的堆栈的预先存在的库.知道一个吗?

编辑:在撰写本文时,我认为这不存在.但是,在服务器和客户端上使用主干(或类似)进行渲染是一种合理的方法(即使不是直接的答案).所以我打算将其作为答案,尽管未来可能有更好的解决方案.

jsd*_*sdw 10

只是为了插话,我也遇到了这个问题(我有非常ajax/js重站点),我发现这可能是有趣的:

crawlme

我还没有尝试过,但听起来它会让整个过程变成一块蛋糕,如果它像宣传的那样工作!它是一个连接/表达中间件,只需在任何页面调用之前插入,显然可以处理其余部分.

编辑:

尝试了抓取,我取得了一些成功,但它使用的后端无头浏览器(zombie.js)失败了我的一些javascript内容,可能是因为它通过欺骗DOM工作,因此不会是完美的.

Sooo,相反,我得到了一个完整的基于webkit的无头浏览器,phantomjs和一组节点链接,如下所示:

npm install phantomjs node-phantom
Run Code Online (Sandbox Code Playgroud)

然后我创建了类似于crawlme的自己的脚本,但是使用了phantomjs而不是zombie.js.这种方法似乎工作得很好,并且将完美地呈现我的每个基于ajax的页面.我写的这个脚本可以在这里找到.使用它,简单地说:

var googlebot = require("./path-to-file");
Run Code Online (Sandbox Code Playgroud)

然后在对你的应用程序的任何其他调用之前(这是使用快递,但也应该只使用连接:

app.use(googlebot());
Run Code Online (Sandbox Code Playgroud)

源代码是简单的减去几个正则表达式,所以有一个雄鹅:)

结果:基于AJAX重节点.js/connect/express的网站可以被googlebot抓取.


ope*_*rid 2

有一种在服务器和浏览器上使用 node.js 和 Backbone.js 的实现 https://github.com/Morriz/backbone-everywhere