yamazのRails日記 このページをアンテナに追加 RSSフィード

2007-01-16FreeBSDでもscrAPI使いたいよ! このエントリーを含むブックマーク

http://d.hatena.ne.jp/secondlife/20060922/1158923779

http://wota.jp/ac/?date=20070115

にてHTMLスクラップするScrAPIが詳解されてて超便利そう!

で、さっそく使うかと思ったらこんなエラー

/usr/local/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/reader.rb:216:in `parse_page': Scraper::Reader::HTMLParseError: Unable to load /usr/local/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/../tidy/libtidy.dylib (Scraper::Reader::HTMLParseError)

from /usr/local/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/base.rb:865:in `document'

from /usr/local/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/base.rb:749:in `scrape'

from /usr/local/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/base.rb:347:in `scrape'

from /home/yama/hoe.rb:11

んで、当該箇所を見るとこんな感じ.

    def find_tidy()
      return if Tidy.path
      begin
        Tidy.path = File.join(File.dirname(__FILE__), "../tidy", "libtidy.so")
      rescue LoadError
        begin
          Tidy.path = File.join(File.dirname(__FILE__), "../tidy", "libtidy.dll")
        rescue LoadError
          Tidy.path = File.join(File.dirname(__FILE__), "../tidy", "libtidy.dylib")
        end
      end
    end

むむ?/usr/local/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/tidyにlibtidy.soはちゃんとあるのになぁ.と悩むことしばし.


どうもgemを展開して調べてみるに,gemで配布されているlibtidy.soはlinux対応のようで(ヒドイ),FreeBSDの場合は別途libtidy.soをインストールしてあげる必要があるようでした.


% cd /usr/ports/www/tidy-lib/

% sudo make install

...

...

% cd /usr/local/lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/tidy

% sudo mv libtidy.so libtidy.so.linux

% sudo ln -s /usr/local/lib/libtidy.so ./

これで無事使えるようになりました.別の解法としては

Scraper::Base.parser :html_parser

スクリプトに加えてHTMLパーサをtidyからhtml_parserに切り替える方法があるようです.

参考まで.



yamaz的日常

なんだか最近Linuxの勢いが強すぎてFreeBSDな私にとって非常に肩身が狭い.

そろそろLinuxメインにすべきなのかなぁと思ったり(´・ω・`)

トラックバック - http://rubyist.g.hatena.ne.jp/yamaz/20070116