MAGAZINE
ルーターマガジン
Sinatra APIでGoogle検索結果取得RPA
こんにちは、コロンビア人の大学院生エンジニアgaruです。
さて、自動で業務を行ってくれるRPAですが、、、
今回はサーバーを立てて簡単にRPAを実行する方法を紹介します。
APIサーバーとは?
APIサーバーとは、簡単に言うと
「リクエストを送ると、レスポンスを返してくれるサーバー」
という事になります。
そんなAPIサーバーを簡単に作成できるものが、フレームワークです。
以下に、言語ごとのフレームワークをあげています。
(ほんの一部です)
Ruby
- Ruby on Rails
- Sinatra
Python
- Django
- Flask
PHP
- CakePHP
- laravel
どこかで聞いたことあるのではないでしょうか?
アプリケーションはこれらフレームワークを駆使して、作られています。
それぞれ得意不得意があり、今回はRubyで最も簡単に使えるフレームワークであるSinatra
を使っていきます。
Sinatraで簡単にAPIサーバーを立てる
Sinatra
をインストールしていない人は、インストールしましょう
$ gem install sinatra
main.rb
というRubyファイルを作ります。
中身は以下の5行だけでok!
require 'sinatra'
get '/' do
return 'Hello World'
end
では、サーバーを立ち上げます
$ ruby main.rb
== Sinatra (v2.0.1) has taken the stage on 4567 for development with backup from Puma
Puma starting in single mode...
* Version 3.11.3 (ruby 2.3.4-p301), codename: Love Song
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:4567
Use Ctrl-C to stop
http://localhost:4567 にアクセスしてみましょう。
このように表示されたら成功です!
実はmain.rb
のdo
からend
の中身でRPAなり、色々な事が行えます。
サーバー側でどのような返答を返すかは、仕様によります。
(是非、色々作ってみましょう)
Sinatraで簡単RPA
今回はAPIサーバーに検索キーワードを渡す
↓
Googleの検索結果のタイトル一覧を返す
と言うサーバーを立てましょう。
タイトル一覧の取得はSeleniumを使います。
インストール
$ gem install selenium-webdriver
web.rb
というRubyスクリプトを作成してください。
require 'sinatra'
require 'selenium-webdriver'
get '/google' do
# Seleniumの初期設定
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36'
caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions' => {args: ["--no-sandbox","--disable-setuid-sandbox","--headless", "--disable-gpu", "--user-agent=#{ua}", 'window-size=1280x800']})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
# Seleniumでクローリング
driver.navigate.to("https://www.google.co.jp/search?q=#{params[:key]}")
sleep(1)
titles = driver.find_elements(:css, 'h3.r').map{|e| e.text}.join("\n")
driver.quit
return titles
end
サーバーを立てます。
$ ruby web.rb
別のターミナルを開いて、リクエストを送ります。
今回はURLにパラメーターを渡す事で、検索キーワードを指定できます。
$ curl http://localhost:4567/google?key=rooter
株式会社ルーター – データクローリング・スクレイピングによるビッグデータ収集
rooterの意味・使い方 - 英和辞典 Weblio辞書
rooterの意味・用例|英辞郎 on the WEB:アルク
ルーター - Wikipedia
株式会社ルーターの会社情報 - Wantedly
「Rooter」をApp Storeで - iTunes - Apple
Rooter | Define Rooter at Dictionary.com
Urban Dictionary: rooter
結果は多少の誤差があるかもしれません、他のキーワードでも試してみてください!
このサーバーを公開すれば、誰でもRPAを実行できますね。
最後に
簡単だったでしょうか?
APIサーバーは作り込むほど複雑になり、使う側に負担がかかります。
是非、わかりやすい設計を心掛けましょう。
また、弊社では上記のようなRPA技術を応用して、サービスの在庫連動やECの自動出品など様々なRPAサービスを展開しております。高度なRPAサービス構築が必要でしたら、ぜひお問い合わせください。
CONTACT
お問い合わせ・ご依頼はこちらから