Ruby HTML parser: Hpricot

今天突然看到 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'<p>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</p>

{gfm-js-extract-pre-1}<p>end</p><p>url = '<a href="http://tzangms.com/blog">http://tzangms.com/blog</a>'<br></br>
puts get_feedurl(url)</p>```

 只要輸入一個部落格網址, 就會抓取這個網址的 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 }

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!