2012-04-02 56 views
0

我有一个由我的大学托管的小型网站。政策是没有启用服务器端脚本语言(例如PHP等),因此网站是静态的或可以使用客户端脚本(例如,JavaScript等)。我也无法触摸服务器/配置它/安装东西。替代服务器端脚本语言进行刮取

无论如何,我想添加一些来自其他网站(即谷歌学者引用)的数据,我设法动态地使用Python + lxml进行修改。 有什么办法可以让这些数据动态查询 - 当然在客户端?

我试过使用IronPython将我的Python代码嵌入到我的网页中,但它抱怨无法找到lxml导入的库。但类似的解决方案会很好。 或纯JavaScript的图书馆,它允许打开和解析外部网页......?

谢谢!

回答

4

编号same origin policy阻止它。

可以使用将数据转码为JSON-P或使用其他主机的第三方代理。

或者,在您控制的服务器上运行cron作业,定期生成新的静态HTML并上传到主机。

+2

+1创建静态内容的cron作业。 – 2012-04-02 15:13:38

+0

难道没有办法规避这个政策吗?例如,在另一个更灵活的服务器上使用php脚本并使用iframe仅显示相关数据?但是,如果我这样做,并且如果我有20个数据来检索并显示在20个不同的小iframe中,我需要查询php脚本20次:s Thanks(all!)为您的回复 – WhitAngl 2012-04-02 15:47:24

+0

实际上你的JSON-P解决方案可能是我想要的:)谢谢 – WhitAngl 2012-04-02 15:49:10

0

诀窍是,你会遇到Same Origin Policy,它主要是拒绝你的客户端代码访问的网站内容不是来自您的网页相同的起源。有一些像CORS这样的东西允许跨源的东西,但用户必须使用支持它的浏览器,并且您尝试从中加载数据的网站必须支持它(并且要么专门允许您访问页面,要么允许全部页面访问)在服务器级别。

所以你可能会需要一个服务器端解决方案  —但是,这并不一定意味着你服务器必须提供它。如果您从支持JSON-P收集信息的网站,那么您可以使用没有SOP问题。如果没有,您可以使用YQL这样的服务,如using YQL as a cross-domain proxy这篇文章中所述。

如果这些都不适合你(并且你不能做一个cron作为Quentin cleverly suggested),我只想指出,PHP网络托管是一个丰富的商品,因此,死了便宜。就像每杯咖啡价格低于平价便宜。我已经看到它低于2美元/月(最便宜的我现在可以在20秒内找到$ 2.49,但我知道我已经看到更好)。因此,您可以重新定位网站,或者如果将它放在大学地址上非常重要,请为您自己提供一杯来自咖啡杯的服务器的JSON-P界面,然后由您的大学网站的客户端代码使用该服务器。

0

鉴于服务器的限制,我会在本地运行这些脚本来生成HTML,并将该静态输出推送到您的服务器上。