Rubyを使ってスクレイピングをしたいけれど、「どこから始めたらいいかわからない」と悩んでいませんか?
この記事では、Rubyの基本的な知識を前提に、Excelファイルを読み込み、そのキーワードをGoogleで検索し、1ページ目の検索結果をCSVにまとめるプログラムの実装手順を詳しく解説します。
この記事を読むことで、以下のベネフィットがあります。
- Rubyを用いたスクレイピングの基本がわかる
- Excelファイルを活用して複数のキーワードを効率よく処理する方法が理解できる
- プロジェクトごとにgem(ライブラリ)を管理する方法が学べる
- 実際に動くプログラムコードを手に入れ、あなた自身のプロジェクトに応用できる
それでは、ステップバイステップで解説していきます!
1. 要件定義:実現したいことを明確にしよう
まずは、何を実現したいのかを整理しましょう。今回の目標は、以下のとおりです。
- Excelファイルの中にキーワードが記載されている
- 各キーワードをGoogleで検索し、1ページ目の検索結果を取得する
- 取得した検索結果をCSVファイルに出力する
これらを自動で行うRubyプログラムを作成するのがゴールです。
2. プロジェクトのセットアップ:Bundlerでgemを管理しよう
プログラムで使用するライブラリ(gem)をインストールして管理するために、Bundlerを使います。
これにより、特定のプロジェクト内で必要なgemのみをインストール・管理できます。
<ステップ>
- デスクトップに「google_scraper」というフォルダを作成します。
- フォルダに移動します:
mkdir ~/Desktop/google_scraper
cd ~/Desktop/google_scraper
- Bundlerをインストールし、プロジェクトにセットアップ:
gem install bundler
bundle init
Gemfile
を編集し、以下のgemを追加します:
gem 'nokogiri'
gem 'selenium-webdriver'
gem 'rubyXL'
- 必要なgemをプロジェクトフォルダにインストール:
bundle install --path vendor/bundle
これで、gemの管理ができるようになります。
3. 設計:プログラムの流れを考える
次に、プログラム全体の流れを設計します。
- Excelファイルの読み込み
- Excelファイル(
keywords.xlsx
)の中にキーワードが書かれているので、それをRubyで読み込みます。
- Googleで検索する
- Seleniumというツールを使って、ブラウザ自動操作を行います。各キーワードをGoogleで検索し、検索結果を取得します。
- 検索結果の保存
- 検索結果のページタイトルとURLを取得し、CSVファイルに出力します。
この全体の流れをもとに、詳細な実装に移ります。
4. 実装:実際のコードを書こう
それでは、上記の設計に基づいて、コードを書いていきます。
コードは1つのファイルにまとめて作成し、そのファイルを実行する形にします。
Excelファイルの準備
keywords.xlsx
という名前のファイルを作成し、A列に検索したいキーワードを入力します。
ファイルは「google_scraper」フォルダ内に配置します。
Rubyコード
次に、以下のRubyコードを同じフォルダ内にgoogle_scraper.rb
というファイル名で保存します。
require 'rubyXL'
require 'selenium-webdriver'
require 'csv'
# 1. エクセルファイルの読み込み
workbook = RubyXL::Parser.parse('keywords.xlsx')
sheet = workbook['検索KW']
# A列のデータを取得
keywords = []
sheet.each do |row|
keyword = row && row[0] && row[0].value
keywords << keyword if keyword
end
# 2. SeleniumでGoogle検索を行う
driver = Selenium::WebDriver.for :chrome
driver.manage.timeouts.implicit_wait = 10
# 3. 検索結果をCSVファイルに保存
CSV.open('search_results.csv', 'w') do |csv|
csv << ['Keyword', 'Title', 'Link']
keywords.each do |keyword|
driver.navigate.to "https://www.google.com/search?q=#{keyword}"
# 1ページ目の検索結果の取得
results = driver.find_elements(css: 'div.g')
results.each do |result|
title = result.find_element(css: 'h3').text rescue nil
link = result.find_element(css: 'a').attribute('href') rescue nil
csv << [keyword, title, link] if title && link
end
end
end
# ブラウザを閉じる
driver.quit
5. プログラムの実行:ターミナルでスクレイピングをスタート
すべての準備が整ったら、ターミナルでプログラムを実行します。
- 作成した「google_scraper」フォルダに移動していることを確認します。
cd ~/Desktop/google_scraper
- 以下のコマンドを実行して、Rubyのプログラムを動かします:
ruby google_scraper.rb
これで、Excelファイルに書かれたキーワードを使ってGoogle検索が行われ、その結果がCSVファイルに保存されます。
6. まとめ:効率的なスクレイピングを習得しよう
今回の記事では、初学者向けにRubyを使ってスクレイピングを実装する流れを解説しました。
以下のポイントが重要です。
- Bundlerを使ってプロジェクトごとにgemを管理することで、必要なライブラリを効率的に扱える
- Seleniumを使ったブラウザ自動操作を活用すれば、複数のキーワードを使った検索が自動化できる
- プログラムの設計段階で全体の流れを把握することが、スムーズな実装につながる
この手法を使えば、キーワードの収集作業が格段に楽になるでしょう。
ぜひ、あなたのプロジェクトでも活用してください。