ここでは、Rails初学者向けにWebサイトから情報を収集してくるチュートリアルを紹介します。
Nokogiriを使ったサンプルアプリケーションを作ります!
🗻 Nokogiriの基本的な説明
Nokogiri を使った Rubyスクレイピング
🎃 プロジェクトを作成
ローカル開発の場合
ターミナルで次のコマンドを実行してください。
# 新しいRailsアプリを作成 rails new web_scraping_sample --skip-bundle
# web_scraping_sample のフォルダに移動 cd web_scraping_sample
|
Cloud 9の場合
- 『Cloud9』にログインして新しいworkspaceを作成
- 公開していい場合はpublic 、公開したくない場合はprivateのRailsアプリケーションを作成してください
🐮 Gemfileに以下を追加
プロジェクト直下のGemfileを開いて以下を追加してください。
追加したらターミナルで次のコマンドを実行します。
bundle install --jobs=4 --path=vendor/bundle
|
Ruby Gemライブラリをインターネットから持ってきて、自動でローカルに保存します。
🚜 Rakeタスクの作成
Rakeタスクを作成します。ターミナルで次のコマンドを実行してください。
# railsコマンドで rake タスク を作成(generate)します rails g task scrape
|
すると、lib/tasks/scrape.rake
が作成されます。
ちなみに、Rake
とはRubyで記述されたプログラムをコマンドプロンプト(ターミナル)から呼び出し、実行できるしくみのことです。
Rakeタスクをもう少し知りたい場合は、「Rakeタスクをつくる」がオススメです!
😼 取得スクリプトを書く
今回はNaverまとめのTechページからタイトルの一覧を取得する手順です。
lib/tasks/scrape.rake
を開いて次の内容を追記してください。
require 'open-uri'
namespace :scrape do
desc 'NaverまとめのTechページからタイトルを取得' task :naver_title => :environment do url = 'http://matome.naver.jp/tech'
charset = nil html = open(url) do |f| charset = f.charset f.read end
doc = Nokogiri::HTML.parse(html, nil, charset)
doc.xpath('//li[@class="mdTopMTMList01Item"]').each do |node| puts node.css('h3').inner_text end end
end
|
これを実行すると以下のようになります。
bundle exec rake scrape:naver_title
# => 写真撮って探しものができるアプリ3選 # => 洋楽好き必見!!音楽の世界が広がるアプリ7選 # => スマホやPCの「ブルーライト」の量が破壊的!健康対策は大丈夫? # => 趣味はかどるわー!ディープなSNSがこんなにあった(゚д゚) # => ちょっとしたシーンで役立つ10のショートカットキー # => ネイルでスマホを操れる?『爪センサー』が画期的 # => 壁を有効活用したい・・!お洒落な「壁掛けアイテム」たち # => Googleも開始。「パスワードなし」でログインの時代キタ? # => イヤホンの音がクリアに…!身近ガジェットの簡単お手入れ法 # => 日本にもこれ欲しい!海外で発売されている斬新な便利グッズ # => 次々と数億円を集めるスタートアップが魅力的だった # => 3Dじゃない方のプリンターも面白いのがたくさんあった # => なにこれスゴい!自転車を盗んだヤツを見つける最新グッズ # => トラックボールで作業効率UP!もうマウスなんて使わない! # => 可視化でわかりやすく!医療の見える化が思った以上に見えている! # => 眠れない夜にさよなら「本当に熟睡出来る」評判の快眠アプリ5選 # => エネループの代わりになる「おしゃれな」充電池たち # => なにこれすごい…アメリカ軍の開発が未来を先取りしてる # => 手に着けるだけのリストバンド型ガジェットで健康を記録する # => AppleWatchピンチ?進化したスマートウォッチのいま
|
🐡 Nokogiriで参考になりそうなサイト
実際にNokogiriのコードを書くときに役に立ちそうなチートシート的なサイトを紹介しておきます。
🐞 参考リンク
初心者向けのRuby on Railsの用語説明
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!