【发布时间】:2012-12-29 06:49:13
【问题描述】:
什么
我的网络应用是通过 Google 的 AngularJS 动态化的。
我希望生成我的页面的静态版本。
为什么
像谷歌这样的网络爬虫执行和渲染 JavaScript;但不要像对待静态内容一样对待内容。
参考资料:
- Does heavy JavaScript use adversely impact Googleability?(程序员 StackExchange)
- Making AJAX Applications Crawlable(面向网站管理员的 Google 文档)
如何
不确定具体如何——这就是我要问的原因——但我想访问与浏览器的“检查元素”相同的源;而不是源代码:Ctrl+U(查看页面源代码)显示。
一旦我有一个渲染页面的脚本; “吐出” HTML+CSS;我会将那些“生成”的文件放在我的网络服务器上。然后将安排一个“cron”作业以定期重新生成文件。
随后将提供这些静态文件而不是动态文件;当 JavaScript 被禁用和/或当爬虫“访问”网站时。
【问题讨论】:
-
这就是用 Python 编写服务器并不适合的事情——如果你一心想使用 AngularJS 之类的东西,那么在服务器上运行 Node 可能实际上是值得的。
-
@ChrisMorgan:我正在使用 Python 来管理控制器之间的接口——以 REST 方式公开我的数据——和我的模型——管理 Python 和数据库之间的连接。我还使用 Python 来管理缓存和任何其他与 Web 应用程序相关的“事物”。当然,我可以在 Node.js 中做到这一点;但我宁愿在 Python 中执行此操作(如果可能)。
-
好吧,如果你想达到这个效果,你基本上有两个选择:(a) 做 JavaScript 所做的,在 Python 代码中,或者 (b) 实际执行页面中的 JavaScript .第一个选项需要努力维护,但可能有利于生成 API(取决于它到底是什么),第二个选项需要一些设置(例如,无头运行 webkit 并在脚本运行时获取并提供结果)并且还可能严重影响性能。
标签: javascript python html rendering static-files