這是一個很長的畫面,我在寫,因爲我不知道從哪裏開始。從一個網站抓取日期並放到日曆中
我想寫一些代碼,可以自動定期從this網站抓取5個日期,並將它們放到我的iCal
日曆中。
我應該在哪裏開始和結束這樣做?
我在RoR和Javascript中相當不錯,但完全不知道我應該用什麼技術來實現這一點。
希望你能對我的問題提出一些看法。
感謝
這是一個很長的畫面,我在寫,因爲我不知道從哪裏開始。從一個網站抓取日期並放到日曆中
我想寫一些代碼,可以自動定期從this網站抓取5個日期,並將它們放到我的iCal
日曆中。
我應該在哪裏開始和結束這樣做?
我在RoR和Javascript中相當不錯,但完全不知道我應該用什麼技術來實現這一點。
希望你能對我的問題提出一些看法。
感謝
假設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,但差異並不大。
大...謝謝。但後來我想知道,每次我想要運行這個腳本時,我是否必須去一個網頁?或者我可以以某種方式將腳本上傳到自己,然後讓它不時自稱? – 2012-01-28 16:18:43
使用Ruby腳本。機械化寶石可以從網頁上刮取日期。然後,ri_cal寶石可以將它們添加到您的日曆中。像xxbbcc這樣的純JavaScript方法可能是可行的,但它幾乎肯定會涉及更多。如果你已經熟悉Ruby,我建議你可以利用「魔法」,讓這些寶石爲你做一些骯髒的工作。
我覺得我現在有更多需要去的地方。非常感謝 :-) – 2012-01-29 20:55:06