こんにちは。koyakuです。

今回は、windows上でubuntuとrubyの環境を構築し、クローリングを行ってみようと思います。
最終的には、弊社のホームページのメインページよりブログ一覧画面へ移動をし、スクリーンショットを取得したいと思います。

手順

  • ubuntuのインストール・初期設定
  • ruby開発環境の構築
  • selenium環境の構築

それでは、順番に進めていこうと思います。

ubuntuのインストール

まず、windows subsystem for linux のインストールします。

desktop左下のスタートボタンを右クリックし、[アプリと機能]を選択。


関連設定の[プログラムと機能]を選択


[windowsの機能の有効化または無効化]を選択

windows subsystem for linuxを選択 有効化

desktop左下のスタートボタンをクリックし、Microsoft Storeを開き、ubuntuを検索、インストール

スタートボタンよりubuntuを検索。起動。

起動したのちに、ubuntuの画面より、username / password の設定が求められるので、入力する。
※今後も多用するため、忘れないようにしておきましょう

上記を設定すると、見慣れたlinuxの画面が現れるかと思います。

rubyのインストール

rubyを管理する rbenvをインストール

※rbenvは複数のRubyのバージョンを切り替えて使うことのできる、便利なツールです。 プロジェクトによって異なるバージョンのRubyを使うときに、rbenvを使うことでプロジェクト毎にRubyのバージョンを切り替えて使うことができます。

gitをインストール

sudo apt-get install git

rbenvをインストール

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
vi ~/.bashrc

.bashrcへ下記を記載

eval "$(rbenv init -)"

ruby-buildをインストール

mkdir -p "$(rbenv root)"/plugins
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
sudo apt install git build-essential libssl-dev

インストールできるrubyのバージョンを確認

rbenv install -l

rubyをインストール

今回は、ruby 2.3.4をインストールします

rbenv install 2.3.4

インストールできたかを確認

ruby -v

通常使うrubyのバージョンとして指定

rbenv global 2.3.4

反映を確認

ruby -v

chromeヘッドレス環境

次に、seleniumを使うために、chromeヘッドレス環境を準備します。こちらは、弊社のchrome ヘッドレスの環境構築(Ubuntu編)をご確認ください。

クローリングを行い、検索結果を取得する

chromeヘッドレス環境が準備できましたら、いよいよ実際にクローリングを行います。 今回は、googleへアクセスし、弊社名を検索し、検索結果のタイトルを取得したいと思います。 以下に従い、Gemfileと実行用のubuntu_crawl_test.rbの2つファイルを作成してください。

Gemfile

gem 'nokogiri'
gem 'selenium-webdriver'

ubuntu_crawl_test.rb


require 'nokogiri'
require 'selenium-webdriver'

class Crawler
    def get_title_text(driver)
        #Nokogiriを用いてHTMLをパースする
        doc = Nokogiri::HTML.parse(driver.page_source, nil, 'utf-8')
        #ユーザー名を取得
        doc.css('h3.r').each do |h3|
            puts h3.text
        end    
    end

    def main
        ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
        #ブラウザ立ち上げモード
        #caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => {args: ["--user-agent=#{ua}", 'window-size=1280x800']})
        #ヘッドレスモード
        caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => {args: ["--headless","--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu", "--user-agent=#{ua}", 'window-size=1280x800']})
        driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

        #googleのトップページに移動
        driver.navigate.to "https://www.google.co.jp/"
        #google検索フォームに値を入力
        driver.execute_script("document.getElementById('lst-ib').value = '株式会社ルーター'")
        #検索ボタンをクリック
        driver.execute_script("document.getElementsByName('btnK')[0].click()")

        3.times{|i|
            get_title_text(driver)
            driver.execute_script("document.getElementById('pnnext').click()")
            sleep 2
        }
        get_title_text(driver)
    end
end

Crawler.new.main

bundle installを行います

$ bundle install --path .bundle

実行します

$ bundle exec ruby ubuntu_crawl_test.rb

実行結果

株式会社ルーター – データクローリング・スクレイピングによるビッグデータ収集
採用情報 – 株式会社ルーター
プレスリリース – 株式会社ルーター
株式会社ルーターの最新情報 - Wantedly
携帯端末などのアフターサービス業務のコンサルタント 株式会社ルーター
株式会社ルーターのアルバイト・バイト求人情報 | 仕事探しは【マッハバイト】
株式会社ルーターの採用・求人情報-engage
株式会社ルーターの求人・転職情報 | Find Job!
株式会社ルーターの求人・転職情報|挑戦する20代の転職サイト - キャリトレ
株式会社ルーター - カイシャの評判
株式会社ルーター 【業務未経験者歓迎】サーバーサイトの開発エンジニア ...
株式会社ルーター - ホーム | Facebook
ルーターの口コミ/評価|カイシャの評判(10200189697)
株式会社ルーターのアルバイト・バイト求人情報|【タウンワーク】でバイトや ...
株式会社ルーターの求人 | Indeed (インディード)
株式会社ルーター アルバイトの求人 - 東京都 新宿区 東新宿駅 | Indeed ...

無事にタイトルを取得することができましたでしょうか?
今回は、windows環境下で、クローラーを動かしてみました。