bar_1

contents_map

ラベル 比較 の投稿を表示しています。 すべての投稿を表示
ラベル 比較 の投稿を表示しています。 すべての投稿を表示

2010年10月7日木曜日

Ruby関連 HTML/Webスクレイピング・ライブラリ・レビュー

HTML/Webのスクレイピング処理の観点から、有名どころのRubyのライブラリについて、現状(2010年10月時点)を調査した。調査項目は凡例に示すとおりである。ライブラリの比較・選定に際して、判断のひとつの材料として資することを、期待している。

なにかご意見がありましたら、お気軽にコメントをどうぞ。
2014-05-06追記: 新しいのはこちら→2014年版



■凡例



  • ■の次に、ライブラリ名 (現時点(2010年)でのバージョン)を記す

  • desc に、ライブラリの目的・機能仕様などの説明を記す

  • update に、ライブラリの更新期間を記す。ここで、yyyy-と記されている場合、yyyy年から現時点でも更新されていることを表す

  • url には、ライブラリのHPを記す。特にない場合、また情報が不足している場合は、補うに足るurl(ソースコードのurl)を追記している

  • ライセンスには、配布条件等のライセンスを記す

  • ソースコードには、ライブラリの格納場所のurlを記す

  • インストールには、ライブラリのインストール方法を記す

  • コメントには、補足の情報、私見などを記す

■Hpricot (0.8.2)


desc:
Hpricot は、非常に柔軟なHTMLパーサーで、田中 哲(TANAKA, Akira)の
HTree とジョン・レッシグ(John Lessig)の jQuery に基づいている。しかし、
コード・スキャナは、C でコーディングし直された。

update:
2006-


ライセンス:
MIT License (see http://github.com/hpricot/hpricot/blob/master/COPYING )


rubyforge:
N/A

インストール:
gem install hpricot

コメント
多くの派生ライブラリを持つHTMLパーサー。webスクレイピングにも使うこと
ができる。
以前の公式サイト(http://code.whytheluckystiff.net/hpricot/)は、リン
ク切れである。

田中 哲氏のhtreeは、 http://www.a-k-r.org/index.html からたどることがで
きる。

■Mechanize (1.0.0)


desc:
Mechanizeライブラリは、webサイト間のやり取りを自動化するために
使用される。Mechanizeは、自動でクッキーを格納して送信、リダイレクトを
フォローし、リンクをたどったり、フォームをサブミットsubmitできる。フォーム・フィ
ールドは増やしたり、サブミットできる。また、履歴となった訪れたサイトを
調査する。

update:
2005-



ソースコード:
github:
http://github.com/tenderlove/mechanize


インストール:
gem install mechanize

コメント:
Andy LesterによるPerlの同名のライブラリ:Mechanize の強い影響のもとに開
発された。webスクレイピングのためのライブラリである。
ruby 1.8.6 と nokogiri に依存している。

インストール時に、エラーが発生するという報告がWeb上に散見される。この場合、gemとRailsの更新等が事前に必要とのこと。
※追記2010/12/7:バージョン1.0.0では、Hpricotではなく、Nokogiriを使用するようになっているようだ。

■ScrAPI toolkit for Ruby (1.2.0)


desc:
CSSセレクタと選択 => 抽出 => 格納 処理ルールを使ったスクレイパーを書く
ためのフレームワーク。

update:
2006-2008



ソースコード:
github:
http://github.com/assaf/scrapi


install:
gem install scrapi

コメント:
少し情報が古い(2007年)が、このような意見もあった:“Web scraping in
Ruby: why I had to use scrAPI instead of WWW::Mechanize and Hpricot”
http://blog.bigsmoke.us/2007/05/02/scrapi-wins-over-mechanize-and-hpricot-for-web-scraping-in-ruby

開発は、止まっているようだ。

■scRUBYt! (0.4.06)


desc:
scRUBYt! は、Rubyで記述された、シンプルだがパワフルなwebスクレイピング・
ツールキットである。目的は、webページ・クローリング、HTMLタグ・属性・
XPath・フォーム名のルック・アップ処理の超めんどくささ、また、その他Web
ページまたはFirebugから直接コピペしたようなサンプルからこれらを理解
するような、典型的な低レベルなwebスクレイピングから、あなたをフリーに
することである。

update:
2007-



ソースコード:
github:
http://github.com/scrubber/scrubyt


インストール:
gem install hpricot
gem install mechanize
gem install scrubyt

コメント:
hpricot と mechanize (選択的に、AJAXのスクレイピングにFireWtir)に依存
している。

■nokogiri (1.4.3.1)


desc:
Nokogiri は、libxmlラッパーである。Nokogiri は、XPathやCSSの検索のため
のインタフェースを持ち、また、HTML, XML, SAX, そしてReaderパーサーの機
能がある。Nokogiri は、Hpricotの寄り道リプレイスメントでもある。

update:
2008-


ライセンス:
The MIT License (via http://nokogiri.org/ )

ソースコード:
github:
http://github.com/tenderlove/nokogiri/


インストール:
gem install nokogiri

コメント:
この中で、一番包括的な機能を持つパーサー。もちろん、webスクレイピングに
も使うことができる。


2010年1月31日日曜日

日本語の辞書(国語辞典)についての考察

ひんしつ【品質】 〔quality〕 ・・・品物の質。

��大辞林第3版より引用)


私は、こういう記述は嫌いだ。
このような記述は、意味がない。なぜなら、何の説明もしていない、同語反復のトートロジーであるからだ。人が辞書を引くとき、普通は意味を知りたい時ではないだろうか?しかし、そこに意味は記されていない―無意味な作業というわけだ。
そんなことを好んでする利用者は、誰もいないであろう。

したがって、
語とその意味のカタログという辞書本来の性質と、利用者の利用目的の観点から、
辞書における語の記述は、説明的な叙述・定義であるべきである。

意味を表現することができる。


ところが、
日本のいわゆる「国語辞典」には、ここで例に挙げた大辞林のように、こういう類の「無意味な」記述が多すぎる。その結果、シソーラス(類語辞典)ともディクショナリ(国語辞典)ともつかぬものとなってしまっている。
それこそ「品質」が低すぎる。


一方で、OALDではどうか。

qual" ity noun, adj.
> noun (pl. -ies)
1 [U, C] the standard of sth when it is compared to other things like it; how good or bad sth is: to be of good / poor / top quality * goods of a high quality * high-quality goods * a decline in water quality * When costs are cut product quality suffers. * Their quality of life improved dramatically when they moved to France.
2 [U] a high standard syn excellence: contemporary writers of quality * We aim to provide quality at reasonable prices. * Get it right, even if it takes time; it’s quality not quantity that matters.
3 [C] a thing that is part of a person’s character, especially sth good: personal qualities such as honesty and generosity * to have leadership qualities * She has all the qualities of a good teacher. * It’s hard to find people with the right qualities for the job.
4 [C, U] a feature of sth, especially one that makes it different from sth else: the special quality of light and shade in her paintings * His voice has a rich, melodic quality.
5 [C] (BrE) = quality newspaper

(http://www.oup.com/oald-bin/web_getald7index1a.pl
より引用。ここでは名詞だけを引用した。発音記号は、表示上の問題から削除)


その記述の量もさることながら、記述の仕方が、全然違うことに、気付くことができる。たとえば、1は

その何か(sth)と同じようなものと比較するときの
sthの水準;いかに良いか悪いかの

と言っている。

無論、「水準」とは何かという疑問があるだろう。しかしこの語(quality)が、複数の比較対象の存在によって規定される;良い・悪いを判断する尺度であることは、理解できる。


「品物の質」などという馬鹿げた記述より、はるかに明瞭な定義であり、説明だ。
(大辞林の記述にさらに付言すれば、品質は、べつに品物(有体物)にだけ成り立つものでもあるまい。サービス品質などともいうだろう)

今後いくつかの国語辞典について、主に語の記述の観点から、比較を行ってみたい。


まとめ
・日本語の辞書(国語辞典)は、品質が悪い
・辞書における語の記述は、説明的な叙述・定義であるべきである

2008年3月5日水曜日

xyzzy: 空白・空行無視した比較のための設定

初期設定ファイル:$XYZZY_HOME/.xyzzy に、下記を追加すればよいよ。

(setq ed::*diff-command-option* "-aBw")

※diffコマンドは、Cygwinのやつを使ってます。