这是一个长镜头而我正在写作,因为我不知道从哪里开始。
我想编写一些代码,可以自动定期从this网站抓取5个日期并将其放入我的iCal
日历中。
我应该从哪里开始和结束呢?
我在RoR和Javascript方面相当不错,但我完全不知道应该使用什么技术来实现这一目标。
希望你能解释一下我的问题。
由于
答案 0 :(得分:1)
假设HTML页面始终保持相同的基本结构,您可以使用nokogiri之类的东西来定位包含日期的节点。
然后,您可以根据需要使用Date.strptime
或DateTime.strptime
方法将日期从特定格式转换为Date或DateTime对象。
至于然后将日期添加到您的日历中,这不是我必须做的事情,但您可能想查看How to interact with a CalDAV server from Ruby?
答案 1 :(得分:0)
在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你可以测试上面的表达式,看看它是如何返回日期的 - 只需复制&amp;使用日期粘贴页面的来源。正如我所说,这适用于.NET,不适用于Javascript,但差异并不大。
答案 2 :(得分:0)
使用Ruby脚本。 Mechanize gem可以从网页中抓取日期。然后ri_cal gem可以将它们添加到您的日历中。像xxbbcc建议的纯JavaScript方法可能是可能的,但几乎肯定会涉及更多。如果您已经熟悉Ruby,我建议您利用“魔力”,让这些宝石为您做肮脏的工作。