On twitter

"YouTube - 韓劇-貝多芬病毒OST泰研-聽得見嗎MV" ( http://bit.ly/bVX5vd ) # 少女時代得泰研ㄝ!!

follow me on twitter

Ruby HTML parser: Hpricot 4

今天突然看到 stickeraction 的某個用 php 寫的 cron job 吃掉好多記憶體, 就突然想說, 其實這個 cron job 應該用 ruby 或者是 python 來作會比較適合, 另外也看看有沒有辦法比較省記憶體的耗用, 就順便練習一下 ruby。

所以就找了一下 ruby 有沒有處理 HTML DOM 的東西, 就找到了 Hpricot, 其實跟之前用的 phpQuery 差不多, 都可以用 jQuery 的語法來處理 DOM, 哈! 真是好物阿!

像是下面這一段是用來找 RSS feed url 的。

require 'open-uri'
require 'rubygems'
require 'hpricot'

def get_feedurl url
    doc = Hpricot(open(url))
    link_tag = doc.at("head > link[@rel='alternate'][@type^='application']")
    if link_tag
        return link_tag.get_attribute('href')
    end

    return nil
end

url = 'http://tzangms.com/blog'
puts get_feedurl(url)


只要輸入一個部落格網址, 就會抓取這個網址的 html, 然後再用 Hpricot 從 html 中抓出 RSS feed url。 不過我 ruby 完全沒再用都忘光光了, 只好一邊 google 一邊寫 Orz anyway, 而這一段原本的 php 程式碼如下:

require 'phpQuery.php';

function get_feedurl(url) {
    phpQuery::get($url);
    return (string) pq('head > link[@rel=alternate][@type^=application]:first')->attr('href');
}

$url = 'http://tzangms.com/blog';
echo get_feedurl($url);

唉~ 感想是 ruby 真是好物阿! 可是都還沒時間學 Orz

[延伸閱讀]
用 Hpricot 來 parsing HTML – {|ihower.idv.tw| blog }

October 6th, 2008 Programming Tags:

4 Responses to “Ruby HTML parser: Hpricot”

  1. Kej says:

    爬 DOM 跟直接用 RegExp 去找不知道哪個比較快?

  2. gslin says:

    regexp 比較快。

  3. f1207bill says:

    之前網站忽然消失是在改程式嗎?

  4. tzangms says:

    @f1207bill
    不是內, 你應該說的是今天凌晨吧? 主機網頁伺服器有當掉, 從一點多當到早上 8 點 Orz

Leave a Reply

Partners of Oceanic / 人生海海

jiwo sca wellmeet