2014の5日目です。Calendarも開催中です。Webからデータを取るためにスクレイピングする際は、Rubyを使うことが多いです。理由としては、Nokogiriが手軽で簡単だからの一点です。Rubyによるクローラー開発技法でも随所に紹介しています。随所というレベルではなく、手を変え品を変えNokogiriでデータ取っているだけじゃねぇかと批判を受けるのではと、懸念するレベルかもしれません。Nokogiriは手軽で便利なので、ちょっと使い方を覚えておくだけで楽できるケースが一杯あります。いうことで、Nokogiri入門編です。Nokogiriの使い方Nokogiriは、Rubyで実装されたHTML/XMLの構文解析器(パーサー)です。Rubyの中では、デファクト・スタンダードと言っても差し支えがないでしょう。XPathやCSSセレクタを利用して、目的の要素を特定し抜き出します。このデータを抜き出すことをスクレイピングと呼びます。Scrape(削る)という意味ですね。下記の例は、nokogiriの公式サイトから、ページ中のリンクを全部取得している例です。element[:href]end実行すると次のようになります。/http://rdoc.info/github/sparklemotion/nokogirihttps://github.com/sparklemotion/nokogiri/tutorials/installing_nokogiri.html/tutorials//tutorials/getting_help.html/tutorials/installing_nokogiri.html/tutorials/parsing_an_html_xml_document.html/tutorials/searching_a_xml_html_document.html/tutorials/modifying_an_html_xml_document.html/tutorials/ensuring_well_formed_markup.html/tutorials/getting_help.html/tutorials/more_resources.html//github.com/sparklemotion/nokogiri.org-tutorials//octopress.org///github.com/coogie/oscailteソースの解説requireで、nokogiriの他にopen-uriというモジュールを呼び出しています。nokogiriはあくまでテキストの文章からデータを抜き出すだけなので、Webからhttp通信でデータを取得することはできません。そこで、open-uriを利用します。open-uriはopenを拡張し、ファイルと同じような形でURLを扱うことが出来ます。その習得したHTML文章を、Nokogiri.HTMLで開いて、Nokogiriのドキュメント形式に変換したオブジェクトを作成しています。このオブジェクトはHTMLデータを内包しているので、Nokogiriのメソッドを利用して様々な切り方でデータを取得することができます。element[:href]endこの例では、CSSセレクタを利用してaタグのものを全部抜き出しています。それを順次elementという変数に格納しています。elementの中から、href属性の値を取り出して表示しています。Nokogiriには多数のメソッドやエイリアスがありますが、基本的には全てこれと同じことをしています。doc.xpath("//html/body/article/p[34]")かなり簡単な説明でしたが、Nokogriを使ったスクレイピングの入門編です。以前、内部の構造含めてもう少し詳しく説明したエントリーを書いたので、興味があればそちらの方も読んでみてください。色々な言語でスクレイピングしましたが、Nokogiriはかなり使いやすい部類だと思います。それでは、迷惑を掛けない範囲で楽しんでください!!あと宣伝になりますが、クローラー/スクレイピングの作り方をこってり解説したRubyによるクローラー開発技法という本も書いています。初心者〜中級者向けですので、興味があれば是非ご覧ください。Also:RubyでWebスクレイピングの話をしてきました。「Rubyによるクローラー開発技法」で付録か何かで書こうか悩ん...2014-08-06『Rubyによるクローラー開発技法』を書きました勉強会やスライドで紹介していましたが、Ruby×クローラーという...2014-05-05開発用プロキシ、「CocProxy」が便利CocProxyというツールがあります。はてなブログをはじめよう!dkfjさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。