ご覧いただきありがとうございます.
実現したいことと諸事情
表題の通り,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
を実行してください.
詳しくはこちらが参考になるでしょう.
import time
import urllib.parse
import chromedriver_binary
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
from time import sleep
class Translator:
def __init__(self):
self.options = Options()
self.browser = webdriver.Chrome(options=self.options)
self.browser.minimize_window()
self.browser.implicitly_wait(2)
def jp2entrans(self, text):
text_for_url = urllib.parse.quote_plus(text, safe='') #URLから翻訳
url = "https://translate.google.co.jp/#ja/en/{0}".format(text_for_url)
self.browser.get(url)
wait_time = len(text) / 50 #翻訳待ちのタイムアウト
time.sleep(wait_time)
soup = BeautifulSoup(self.browser.page_source, "html.parser") #翻訳結果の抽出
ret = soup.find(class_="tlid-translation translation")
return ret.text
def quit(self):
self.browser.quit()
translator = Translator()
orig = "最近暑いですね.マスクをつけていると死んでしまいそうです."
origs = orig.split(".")
for i,txt in enumerate(origs):
txt += "."
en_txt = translator.jp2entrans(txt)
if i < len(origs)-1: #最後の一文は".."になるのでスキップ
print(en_txt)
translator.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
前述の通り,メジャーバージョンを一致させています.置き場所に関しては現段階で特に指定はありません.
どうぞよろしくお願いいたします.
解決後のコード
def __init__(self):
self.options = Options()
self.options.binary_location = "C:\\Program Files (x86)\\chrome-win\\chrome.exe" #これを追加いました.
self.browser = webdriver.Chrome(options=self.options)
self.browser.minimize_window()
self.browser.implicitly_wait(2)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
これで どうでしょうか?
def __init__(self):
self.options = Options()
self.options.binary_location = 'Chromium のPATH'
self.browser = webdriver.Chrome(executable_path ='chromedriver.exe のPATH' , options=self.options)
self.browser.minimize_window()
self.browser.implicitly_wait(2)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.20%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
otn
2020/07/21 19:53
バージョン管理上の問題であれば、Firefoxを使うとか。
branch
2020/07/21 19:56
ご意見ありがとうございます.
最終的にはFireFoxやOpera(ドライバあるのか??)あたりで実装しようとは思いますが,使い慣れたChromeであれば私の開発もはかどりますので,,,
一週間ほど回答を募集してみてからかな,と思っています.
Helloc
2020/07/22 05:38
binary_location で Chromium の PATHを 指定してみて下さい
因みに
Opera では Launcher.exeではなく opera.exeです