LoginSignup
8
8

More than 5 years have passed since last update.

Rubyでスクレイピングをする際に調べたこと

Posted at

基本的なライブラリ

Open-URI
    * http/ftpに簡単にアクセスするためのライブラリ
    * Kernel#openを定義
    * ファイルのopenと同様にURLを扱える
Nokogiri(静的なものに限る)
    * HTML/XMLの構文解析器(パーサー)
    * ほぼデファクトスタンダード
    * XPath or CSSセレクタでHTML中の要素を選択
    * UTF-8以外の文字コードを扱う場合は注意
Mecanize(動的・ステートフルなクローラ)
    * 対話型の為、ログインしてデータをクローリングするなどに使用出来るが、javascriptには対応していない。

クローラーフレームワーク

Anemone(静的・ステートレスなクローラ、イマイチ感あり)
    * Ruby製のフレームワーク
    * データ収集/解析/保存のすべての機能がある
    * 6年ほどメンテされていない
    * ScrapyのあるRubyが羨ましい今日このごろ
Selenium(jsを使った動的なページの取得の際に使う)
    * ログインページへのログイン(http://iwathi3.hatenablog.com/entry/web_scraping_Ruby_Selenium)
    * Seleniumの弱点(https://qiita.com/justin999/items/55fbfd5d4f9fc8e5e77d)
        * 手軽だが遅い
        * ページを一回一回レンダリングするので時間がかかる。
            * Headress Chromeを使えばあまり関係ない?
        * ローカルで動かすのとサーバー上で動かすのに環境が違う
        * chrome driverのインストールが面倒
Capybara(javascriptが必要なページのクローラ)+Selenium
    * 基本的にはUIテストツール
    * ブラウザを使うのでjsにも対応可能
    * スクレイピング部分はNokogirを使用
    * CapybaraをラッパーにしたMasqueというクローラー
    * ブラウザ代わりに、PhantomJSを使うのもあり
cosmiccrawler
    * 並列処理を得意とするクローラー
    * 並列処理の実装は、EventMachine
    * EventMachineのめんどくさい処理を隠蔽してくれる

補助的なライブラリ

CocProxy
    * ほぼピュアRubyで実装されたプロキシサーバ
    * 開発用途でクローラー作成時に便利
    * 訪問済みサイトをキャッシュしてくれる
    * 訪問先サイトに無駄に負荷をかけずに試行錯誤できる

参考:

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8