3

在解决如何启动无头浏览器以提供使用 javascript(具体来说是 sammy.js)来提供 AJAX 内容的站点的静态 HTML 快照时遇到了真正的麻烦。

我正在研究使 AJAX 应用程序可抓取的 Google 规范:

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

这在大多数情况下都很棒而且非常清晰,而且我在获取 ?_escaped_fragment_ URL 时没有任何问题。

大部分模板都是在服务器端完成的,所以我很想只编写一个 PHP 快照构建文件,该文件使用来自 sammy 应用程序代码(有很多路由)的相同正则表达式匹配以包含在各种模板文件中。但是,很多操作都发生在 javascript 应用程序中,因此这意味着在 PHP 中镜像所有这些处理,这意味着并排维护两个文件,跨语言 - 这是很多工作!

现在,我读到您可以使用 Headless Browser 来“渲染”页面并执行所有 javascript(匹配 #!/ 路由并为请求提供正确的内容),然后将整个 DOM 内容作为 HTML 返回,这将提供给 googlebot。

我进行了长时间的艰苦搜索,但找不到任何关于从 PHP 运行无头浏览器的分步指南(适用于所有 Java 新手)。我想这意味着我只是不知道要搜索什么。

我想知道的是:设置和使用无头浏览器来提供这些 HTML 快照是否需要更多工作?如果是这样,是否值得这样做?

另外,如果有任何指南可以指点我,那就太好了!

谢谢!

乔斯

4

2 回答 2

2

我认为你最好在服务器上复制你在客户端所拥有的东西。尽管这似乎是一项低效的工作,但它至少有一个明确且有限的范围。

大多数著名的无头浏览器都被设计为应用程序开发的测试工具。因此,它们的结构是非常开放的,如果您负责应用程序的 QA,这是一件好事,但如果您只想用它做一件特定的事情,那就不是那么回事了。

我使用Selenium-RC在特定项目上只做一件特定的事情,并发现处理所有与 Selenium 相关的问题很快就变成了一个项目本身。尽管 Selenium-RC 肯定可以完成您想要做的事情,但考虑到您想要完成的事情的特殊性,这似乎是一个很大的承诺。

(作为一个完整的 Java 业余爱好者,我无法对HTMLUnit发表评论,但仅就规范而言,它似乎比 Selenium-RC 更适合您的需求。虽然如果使用它有一些相同的设置和管理要求。)

所以回到在 PHP 中复制所有内容的替代方案......

请记住,您不需要 HTML 快照中的所有内容都与浏览器中的内容完全相同:只要您拥有核心内容和关键导航链接,GoogleBot 就会拥有它需要的大部分内容. 您是否还需要将网站上的每一页都编入索引?或者你能确定几条真正最重要的路线,并提供这些路线的快照吗?您还可以使用 Web 分析或服务器日志数据来更好地通知快照优先级。

于 2011-03-20T15:55:48.177 回答
0

对于任何想知道的人 - 我已经弄清楚如何使用 node.js 准确地完成所需的工作,并将很快在 github 上发布它,并更新问题......

于 2011-04-26T09:46:05.287 回答