我想写一个rails应用程序,它可以像evernote clipper那样捕获一个网页。如果你不熟悉,在你的浏览器中,你可以点击工具栏上的一个按钮,它会捕捉到一个相当精确的网页布局副本。例如,转到http://www.evernote.com/pub/jssmith072/shared并单击该页上的单个注释,您将能够看到我捕获的网页。我不知道从哪里开始有几个原因:
如何在rails应用程序中以编程方式获取呈现的网页?我可以/应该使用webkit吗?
如何将此网页存储在数据库中?
如何在浏览器之间一致地显示此网页存档?
最佳答案
就我个人而言,我倾向于完全不将其存储在数据库中,而是生成一个后台作业来拉下站点,解析它并使用可读性端口对其进行过滤,然后将其保存到某个文件系统(public或non,public,取决于您的需要,您可以轻松地编写一个资产服务控制器以公开非公共静态内容)使用唯一标识它的目录方案。
这样你就不需要做任何可怕的、复杂的事情,只需要让服务器做他们擅长的事情,而不必编写自定义的东西,以便每次查看此页面时从数据库中提取潜在的大量数据。
这样的话,你只需要一个简单的数据库条目,它有一个id,一个url,一个标志来表示它已经被成功下载了(或者当它最后一次失败时,可以稍后再试)。它应该/将存储在文件系统上的路径,可能还有一个文本列,其中包含用于搜索目的的页面文本转储。