【发布时间】:2012-01-29 11:47:49
【问题描述】:
这是一个长镜头,我正在写,因为我不知道从哪里开始。
我想编写一些代码,可以自动定期从this 网站获取5 个日期,并将它们放入我的iCal 日历中。
我应该从哪里开始和结束这样做?
我非常擅长 RoR 和 Javascript,但完全不知道我应该使用什么技术来实现这一点。
希望你能对我的问题有所了解。
谢谢
【问题讨论】:
标签: javascript jquery ruby-on-rails
这是一个长镜头,我正在写,因为我不知道从哪里开始。
我想编写一些代码,可以自动定期从this 网站获取5 个日期,并将它们放入我的iCal 日历中。
我应该从哪里开始和结束这样做?
我非常擅长 RoR 和 Javascript,但完全不知道我应该使用什么技术来实现这一点。
希望你能对我的问题有所了解。
谢谢
【问题讨论】:
标签: javascript jquery ruby-on-rails
假设 HTML 页面始终保持相同的基本结构,您可以使用 nokogiri 之类的东西来定位包含日期的节点。
然后,您可以根据需要使用 Date.strptime 或 DateTime.strptime 方法将日期从特定格式转换为 Date 或 DateTime 对象。
至于然后将日期添加到您的日历中,这不是我必须做的事情,但您可能想查看How to interact with a CalDAV server from Ruby?
【讨论】:
在 Javascript 中使用 XMLHttpRequest 对象下载您需要的页面,然后使用正则表达式解析出日期。日期似乎都有固定的格式:
<b>Mon Day Hr:Min UTC+4</b>
所以为此编写正则表达式应该很容易。我不知道确切的 Javascript 正则表达式格式,但这是 .NET 的等价物,将其调整为 Javascript 应该很容易 - 希望这会有所帮助:
<b>(?<date>(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{2} [0-9]{2}:[0-9]{2}) UTC[+-][0-9]+</b>
这会查找页面中的所有日期字段 - 一旦您有了日期字段,每个正则表达式匹配都会有一个名为 date 的子组,其中包含实际的日期部分。
如果您访问此页面:.NET Regex tester,您可以测试上面的表达式以查看它如何返回日期 - 只需复制并粘贴您的页面源代码和日期。正如我所说,这是针对 .NET,而不是针对 Javascript,但差异并不是很大。
【讨论】:
使用 Ruby 脚本。 Mechanize gem 可以从网页上抓取日期。然后 ri_cal gem 可以将它们添加到您的日历中。像 xxbbcc 建议的纯 JavaScript 方法可能是可能的,但几乎肯定会涉及更多。如果您已经熟悉 Ruby,我建议您利用“魔法”,让这些宝石为您完成繁琐的工作。
【讨论】: