-
entry001352
comments
Ruby で HTML スクレイピングを行うライブラリ、scRUBYt を試しました。
なかなか見つけられなかったんだけれど、ここにいろいろと情報がありました。
インストールは gem で簡単にできるんだけれど、いくつかの依存ライブラリが最新のものではなかったためにちょっと手間がかかりました。 バージョンを明示してインストールします。
$ sudo gem install ruby2ruby --version 1.1.6 $ sudo gem install ParseTree --version 1.7.1 $ sudo gem uninstall RubyInline --version 3.7.0 $ sudo gem install RubyInline --version 3.6.3 $ sudo gem install scrubyt --include-dependencies
Google を使った簡単なサンプルを。 キーワード "Java" で Google 検索をかけて、結果を XML で表示します。
#!/usr/bin/env ruby require "rubygems" require "scrubyt" keyword = "java" google_data = Scrubyt::Extractor.define do fetch "http://www.google.com/" fill_textfield "q", keyword submit link %Q{//div[@id="res"]//ol/li//a[@class="l"]} do name "./text()" url "./@href" end end puts google_data.to_xml非常に簡単です。 一部、HTML ページの構造を利用して XPath を記述していますが、これも必須ではありません。 キーワードで引っ掛ける、もっと楽な書き方もあります。 結果はこんな感じです。
<root> <link> <name>java.com: なたと Java</name> <url>http://www.java.com/ja/</url> </link> <link> <name>無料 Java ソフトウェアをダウンロード - Sun Microsystems</name> <url>http://www.java.com/ja/download/</url> </link> <link> <name>Java Developer Center</name> <url>http://www.oracle.com/technology/global/jp/tech/java/index.html</url> </link> <link> <name>Java - Wikipedia</name> <url>http://ja.wikipedia.org/wiki/Java</url> </link> <link> <name>Javaテクノロジ - サン・マイクロシステムズ</name> <url>http://jp.sun.com/java/</url> </link> <link> <name>Javaとは - 意味・解説 : IT用語辞典</name> <url>http://e-words.jp/w/Java.html</url> </link> <link> <name>Javaの道(Java入門・リファレンス)</name> <url>http://www.javaroad.jp/</url> </link> <link> <name>JAVA 動物実験の廃止を求める会</name> <url>http://www.java-animal.org/</url> </link> <link> <name>Javaとは - はてなキーワード</name> <url>http://d.hatena.ne.jp/keyword/Java</url> </link> <link> <name>Java Solution - @IT</name> <url>http://www.atmarkit.co.jp/fjava/</url> </link> </root>to_xml ではなく to_hash を使えば Ruby 内でスクレイピング結果をほげほげすることもできます。
MTEntryMore
トラックバックする
http://mt.mizba.net/system/tb.cgi/1337
コメントを登録する
麦酒堂ではコメントスパムを防止するために,いただいたコメントは管理人が手動でサイトに反映しております.
反映までしばらく時間がかかりますので予めご了承ください.