プログラム初心者な方向けに始めたRailsチュートリアルシリーズです。今回はRubyでスクレイピングをしたいという人向けに『Nokogiri』というライブラリを使ったスクレイピングのチュートリアルを作ってみました!
目次
(1) Webスクレイピングとは?
(2) Nokogiriとは?
(3) 最初に読んでおくと捗りそうな記事
(4) Gem Nokogiriのインストール
(5) Yahoo!Japanのトップページからtitleを取得
(6) NaverまとめTechページの注目一覧のタイトル・画像を取得
(7) 実際にコードを書くときに参考になるサイト
(8) Railsへの組み込み
(1) Webスクレイピングとは?
WebスクレイピングとはWebサイトのHTMLデータを収集して、特定のデータを抽出・整形することです。Webスクレイピングの応用例としては次のような場面があります。
* 部分的なコンテンツを抽出して、携帯向けのコンテンツとして使う * 小見出しを取り出して目次を作成する
参照元: Webスクレイピングとは (Web scraping) ウェブスクレイピング: - IT用語辞典バイナリ
(2) Nokogiriとは?
『Nokogiri』とはスクレイピングでよく使われるRubyのライブラリです。特徴は次の通り。
* HTMLやXMLの構造を解析して、特定の要素を指定しやすい形に加工できる XpathやCSSセレクタを使った要素の抽出を行うことができる
XPathやCSSセレクタの説明は下記サイトがわかりやすかったです!
1.XPath の基本 1 | TECHSCORE(テックスコア)
(3) 最初に読んでおくと捗りそうな記事
Engine Yardさんのブログ『Nokogiri の基本(翻訳版)』は、イメージやサンプルソースをうまくつかながらキーワードを丁寧に説明してくれています。
(4) Gem Nokogiriのインストール
NokogiriのインストールはRubyのスクリプトの場合は次の通りです。
1
| |
Railsのプロジェクトで使う場合は、Gemfileに次のコードを追加します。
1
| |
次にターミナルでGemをインストール。
1
| |
(5) Yahoo!Japanのトップページからtitleを取得
ここからは少し手を動かしながら、実際にYahoo!Japanのトップページからtitleを取得してくるRubyのスクリプトを作ります。
まず、ファイルscrape_yahoo_title.rbを作成します。作成したファイルをエディタで開いて次のようなソースを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
作成したら、ターミナルで以下のコマンドにより実行できます。
1
| |
すると以下の様な結果が帰ってくれば成功です。
1
| |
(6) NaverまとめTechページの注目一覧のタイトル・画像を取得
次にNaverまとめのTechページの注目一覧のタイトル・画像を取得してみます。
まず、ファイルscrape_naver_matome_tech.rbを作成します。作成したファイルをエディタで開いて次のようなソースを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
作成したら、ターミナルで以下のコマンドにより実行できます。
1
| |
(5), (6)のサンプルソースはGitHubに公開しています。
(7) 実際にコードを書くときに参考になるサイト
実際にNokogiriのコードを書くときに役に立ちそうなチートシート的なサイトがこの『スクレイピングのためのNokogiri利用メモ』。 Nokogiriでスクリプトを書いていく上で何度もお世話になると思います。
Nokogiriを使って、気象庁のデータをスクレイピングしたサンプルソースが載っているサイトがこの『Ruby + Nokogiri で 気象庁スクレイピング』。実際にコードを書いている時に詰まったら、読んでみるのもいいかも。
こちらはWikipediaのデータをスクレイピングしたサンプルソースが書かれているのが『Nokogiriで、Wikipediaの記事をパースする』です。書いていく上でのヒントになるかも。
(8) Railsへの組み込み
Rubyでスクリプトができたら、Rakeタスクにして呼び出すのが一番シンプルだと懐います。拙著『RailsでオリジナルRakeタスク作成からRSpecテストまで』をよかったら御覧ください。