docker環境におけるseleniumを使ったスクレイピングについて
現在、docker環境でrailsを使って勉強中です。
seleniumでスクレイピングをして遊んでいます。
ローカルでは問題なく動いていたのですが、dockerizeした途端エラーが出ました。
やりたいこと
ヘッドレス(画面を隠した状態?)ではなくスクレイピングをする対象のページを画面に表示して動きを見える形にしたい。
理由:スクレイピングをする対象のページを開いた後に「パスワード」や「reCAPTCHA」を自分で手動で入力後、自動で処理を開始するため画面が出ていないと処理を開始できません。。。
ローカル環境の時のソース
この後の処理で対象ページを表示してログイン情報の入力とreCAPTCHAを手動入力後、自動でデータを取得できるようになっています。↓
require 'selenium-webdriver'
require 'webdrivers'
driver = Selenium::WebDriver.for :chrome
docker環境のときのソース(エラーが出るver)
require 'selenium-webdriver'
require 'webdrivers'
driver = Selenium::WebDriver.for :chrome #←エラー箇所
エラー内容
Selenium::WebDriver::Error::UnknownError (unknown error: Chrome failed to start: exited abnormally
rails_1 | (unknown error: DevToolsActivePort file doesn't exist)
rails_1 | (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)):
docker環境のときのソース(エラーが出ないver)
require 'selenium-webdriver'
require 'webdrivers'
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = Selenium::WebDriver.for :chrome, options: options
上の、「docker環境のときのソース(エラーが出ないver)」で「headlessオプション」がある時エラーは出ないのですが、ヘッドレスのため画面が出てこず何も処理ができません。。。
動き的にdocker環境の時はヘッドレスオプションが必須なのか、と思っているのですがどうにかして画面に表示できるようにしたいです。
質問内容
そもそも自分のやりたい「ヘッドレスの画面を隠したやり方ではなく、スクレイピングしたいページを表示させたい」というのはdocker環境ではできないのか。できる場合のやり方。または、全く別の問題なのか。ご存知の方、教えていただきたいです。
reCAPTCHAを自動で突破できるやり方があればヘッドレスでもいいんですけど。。。
dockerを動かしているホストのOSはmacOSCatalinaバージョン10.15 、dockerコンテナの中で動いてるOSはLinuxです。
*ここで質問させて頂くことが初めてのため至らぬ事がありましたら申し訳ありません。初学者で、独学のため質問のしかた等も間違っていたり、情報が足りないなどありましたら教えていただきたいです。よろしくお願いいたします。