现实世界中的问题:
我的应用托管在Heroku上,据我所知,Heroku无法提供一种运行无头(无GUI)浏览器(例如HTMLUnit)的解决方案,以为Googlebot 生成HTML快照以索引我的AJAX内容。
我建议的解决方案:
如果您还没有的话,建议您阅读Google的 《使AJAX应用程序可抓取的完整规范》。
想象一下我有:
http://example.com
http://example.com#!tab=TabA&subtab=SubTab3
location.hash
注意:Hash Bang(#!)是 google spec的一部分。
我想构建一个托管在Google App Engine(GAE)上的简单“ Web服务”,该服务是:
http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3
我的http://example.com应用将需要管理对http://htmlsnapshot.appspot.com… 的调用,基本上是:
http://htmlsnapshot.appspot.com
http://example.com/?_escaped_fragment_=tab=TabA%26subtab=SubTab3
我对Google App Engine或Java或HTMLUnit没有任何经验。
我也许可以弄清楚……如果可以的话,将发布我的结果。
否则,我觉得这是一个 非常好的机会, 对于某人来说,写一个踢屁股博客文章概述 了新手如何逐步 建立这样的Web服务的 指南 。
这会将更多的人介绍给出色的(免费的)Google App Engine。毫无疑问,这还将鼓励更多的人采用Google的可抓取AJAX内容规范…我们都可以从中受益!
随着Google规范的获得越来越多的接受,设置无头浏览器的“障碍”将使 许多 开发人员谷歌搜索答案!立即获得名誉和荣耀的答案!(编辑:至少我会唱歌给你赞美)。
@_chrisjacob 如果您想讨论解决方案,请在Twitter上打我。
@_chrisjacob
我已在AppEngine上成功使用HTMLunit。我的GWT代码可在gwt- platform项目中找到,我得到的结果与Amit Manjhi 的HTMLunit- AppEngine测试应用程序的结果相似。
使用GWTP当前的HTMLunit支持来完全按照您的描述进行操作应该相对容易,尽管您可以在更简单的应用程序中进行操作。我看到的一个问题是AppEngine请求的超时时间为30秒,因此您的页面处理HTMLunit的时间不能超过该时间。
更新 :已经有一段时间了,但是我终于解决了长期存在的有关使用GWTP使GWT应用程序可爬网的问题。文档不完全存在,但请查看问题:http : //code.google.com/p/gwt- platform/issues/detail?id=1