【Ruby on Railsアプリ開発】Mechanizeでスクレイピングする方法

Sponsored Link


Ruby on Railsアプリでスクレイピングする方法を忘れないうちに

どうも、Linです。アイスに移行してます。

 

「Ruby on Railsで他のウェブサイトからの情報を掲載できるアプリを作りたい」

そんな時におすすめなのが、

スクレイピング

という技です。

 

スクレイピングとは、Wikipediaによると、

ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと

らしいですね。

なんと、そのウェブサイトから情報を抽出する技をRailsアプリでも実現できるというのです。

今日はこちらのQiitaの解説を見ることでスクレイピングをマスターできたきがするので、忘れないうちに書き留めておこうと思います。

スクレイピングの方法は、Mechanizeというgemを使った方法です。

 

 

Ruby on RailsのアプリでMechanizeを使ってスクレイピングする方法

アプリ例として、freesworderの記事タイトルを取得するアプリを作ってみましょう。

 

Step1. アプリを作る

まずは、スクレイピング用のRailsアプリを作ってみましょう。

新規Railsアプリの作成はrails newでしたね?

今回は「scraping」という名前のアプリを作成していきます。

 

 

Step2. アプリのディレクトリに移動

アプリ開発を進めるために、先ほど作成したscrapingというアプリのディレクトリに移動しちゃいましょう。

 

Step3. コントローラー作成

Railsアプリの脳とも言えるコントローラーを作成していきます。

今回は適当にtopという名前のコントローラーを作ってみました。

 

Step4. コントローラー編集

続いて、スクレイピングのgemである「mechanize」をアプリに取り入れましょう。

Gemfileの最後に、

を追加。

そして、Gemfile編集後のおきまりの、

を実行してください。

 

Step5. コントローラー編集

viewファイルでスクレイピングした変数を受け取れるように、コントローラーでスクレイピング用のデータを目的のサイトから引っ張ってきます。

 

まずは、topコントローラーに「home」というアクションを追加します。

 

top_cotnroller.rb

 

続いて、homeアクションにスクレイピング部分を追記。

 

 

これは、agentという変数にMechanizeクラスのインスタンスを代入。

その後、pageという変数に「http://freesworder.net」というウェブサイトからHTML情報をgetというメソッドで、Mechanizeインスタンスから抜き出したものを代入します。

 

次に、@elementsというViewファイルでも使えるクラス変数に、「http://freesworder.net」のトップページにある「entry-title」というクラスのついてる要素を配列形式で入れて行ってます。

以上で、コントローラーの編集は終了です。

 

 

Step6. ルーティング編集

先ほど定義したtopコントローラーのhomeアクションがviewページで確認できるようにルーティングファイルを編集します。

 

config/routes.rb

 

これでトップページに飛ぶと、homeアクションが実行されるというわけですね。

 

Step7. Viewファイル作成で表示を確認

結果を表示するビューファイルを作成します。

home.html.erb

というファイルをapp/views/top以下に作成。

 

スクレイピング情報を配列で綺麗に取り出せるように、home.html.erbを下記のように編集します。

 

 

Step8. 結果を確認

これで終了。

まずはテストサーバーを立ち上げます。

この状態で、

http://localhost:3000/

にアクセスしてみましょう。

 

すると、こんな感じでfreesworderの記事のタイトルがズラーっと並んでいるのではないでしょうか??

 

rails スクレイピング

 

これは全然不吉な兆候ではなく、Railsアプリでスクレイピングに成功した証拠です。

Ruby on Railsアプリでスクレイピングにチャレンジしてみたい方は参考にしてみてくださいね。

 

それでは!

 

Lin

飯橋凛(Ihashi Lin)

インターネット広告代理店を1年半で退職。
その後、副業として活動していたウェブメディア運営のフリーランスへ。
現在はプログラミングの勉強に励み、0からフリーエンジニアの道を目指す。最近はキムチをまとめ買いにはまっている。


Sponsored Link

2件のコメント

コメントはこちらからお願いします!



もう1本読んでみる