ご覧いただきありがとうございます.
###実現したいことと諸事情
表題の通り,Seleniumを使ってChromiumを操作したいのですが,Win10上でChromium+Seleniumを使用している人が少ないようで,Web上で検索をかけても見つかりません.
(ラズパイとかは出てきますが,,,そもそもapt-getが使えない+デフォルトブラウザがChromiumでChromeと競合しない&もともとPATHが通っている という点で参考にしかなりません.)
1.Selemiumでchromiumを明示的に指定して操作する方法
2.(Chromeのドライバと同一のもので動作すると踏んでいますが)動作しない場合は動作させる方法
をご教授いただけませんでしょうか.
1については公式リファレンスを確認しましたが,イマイチ理解できませんでした.(英語力の問題?)
というのも,翻訳自動化ツールを作成しているのですが,常駐ツールとして部内の事務用PCに導入させようとしているので,すでにユーザが多いであろうChromeよりはChromiumの方が都合がよいのです.
ChromeとChromedriverのメジャーバージョンが一致している必要があるが,Chromeでは自動アップデートがかかってしまうという点も今回Chromiumでの実装をもくろんでいる理由の一つです.
###できていること
すでにChromeでは動作を確認しております.
以下のコードを実行するとChromeが起動し,最小化し,入力してある日本語を一文ごとに翻訳し,翻訳結果をprintしてくれます.ヘッドレスモードに関しては社内proxyの問題か,クラッシュするので最小化で対応しています.
ご検証いただける場合は事前にpip install chromedriver_binary==84.0.4147.30.0
を実行してください.
詳しくはこちらが参考になるでしょう.
Python
1import time 2import urllib.parse 3import chromedriver_binary 4from selenium import webdriver 5from selenium.webdriver.chrome.options import Options 6from bs4 import BeautifulSoup 7from time import sleep 8 9class Translator: 10 def __init__(self): 11 self.options = Options() 12 self.browser = webdriver.Chrome(options=self.options) 13 self.browser.minimize_window() 14 self.browser.implicitly_wait(2) 15 16 def jp2entrans(self, text): 17 text_for_url = urllib.parse.quote_plus(text, safe='') #URLから翻訳 18 url = "https://translate.google.co.jp/#ja/en/{0}".format(text_for_url) 19 self.browser.get(url) 20 21 wait_time = len(text) / 50 #翻訳待ちのタイムアウト 22 time.sleep(wait_time) 23 24 soup = BeautifulSoup(self.browser.page_source, "html.parser") #翻訳結果の抽出 25 ret = soup.find(class_="tlid-translation translation") 26 27 return ret.text 28 29 def quit(self): 30 self.browser.quit() 31 32 33translator = Translator() 34 35orig = "最近暑いですね.マスクをつけていると死んでしまいそうです." 36origs = orig.split(".") 37 38for i,txt in enumerate(origs): 39 txt += "." 40 en_txt = translator.jp2entrans(txt) 41 42 if i < len(origs)-1: #最後の一文は".."になるのでスキップ 43 print(en_txt) 44 45translator.quit()
実行結果はIt's been hot recently.
とIt seems that you will die if you wear a mask.
となります.
###環境とか
*Windows10
*Python3.8.4
*Google Chrome 84.0.4147.89 →C:\Program Files (x86)\Google\Chrome\Application
*Chromium 84.0.4147.0 → デスクトップ\chrome-win\chrome.exe
(解決後追記)保守性向上のため移動しました.C:\Program Files\chrome-win\chrome.exe
前述の通り,メジャーバージョンを一致させています.置き場所に関しては現段階で特に指定はありません.
どうぞよろしくお願いいたします.
####解決後のコード
Python
1def __init__(self): 2 self.options = Options() 3 self.options.binary_location = "C:\Program Files (x86)\chrome-win\chrome.exe" #これを追加いました. 4 self.browser = webdriver.Chrome(options=self.options) 5 self.browser.minimize_window() 6 self.browser.implicitly_wait(2)
回答1件
あなたの回答
tips
プレビュー