Python+Selenium+ChromeでDeepLの翻訳を実行する

Excel等ですでに翻訳したい文をまとめている場合,いちいちコピペしてDeepLに翻訳させるのは面倒なので,Python+Selenium+ChromeでDeepLの翻訳を実行します.

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

# Selenium+Chromeの起動

下記のコードでSelenium+Chromeを起動させ,DeepLに接続します.

import time
import requests,os,bs4
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selene.driver import SeleneDriver
from webdriver_manager.utils import chrome_version
from webdriver_manager.chrome import ChromeDriverManager

# ローカル上でselenium.webdriverの起動
def webdriver_local_start():
    # versionに応じたchrome driver のインストール
    version = chrome_version()
    url = 'http://chromedriver.storage.googleapis.com/LATEST_RELEASE_' + version
    response = requests.get(url)

    options = Options()
    options.add_argument('--headless')

    # インストールしたchrome driverでchromeを起動
    driver = SeleneDriver.wrap(webdriver.Chrome(
        executable_path=ChromeDriverManager().install(), 
        chrome_options=options))
    
    return driver

# selenium.webdriverの起動(ローカル)
driver = webdriver_local_start()

# Selenium 経由でブラウザを操作する
url = 'https://www.deepl.com/ja/translator'
driver.get(url)
print(driver.current_url)
# https://www.deepl.com/ja/translator

# 翻訳前の文を入力

# 翻訳前言語のメニューの展開

下記のコードで翻訳前言語のメニューを開きます.

# 言語の設定
languages = driver.find_elements_by_class_name("lmt__language_select__active__title")
print(languages[0].text)
# 言語メニューを開く
languages[0].click()

# 言語

# 翻訳前言語の選択

下記のコードで翻訳前言語の選択します.

# 言語メニュー
language_menu = driver.find_element_by_class_name("lmt__language_select__menu")
language_buttons = language_menu.find_elements_by_tag_name("button")

# 英語を選択
for language_button in language_buttons:
    if language_button.text=='英語':
        # 画面外のボタンをクリック
        driver.execute_script("arguments[0].click();", language_button)
        break

# 英語と選択したか確認
languages = driver.find_elements_by_class_name("lmt__language_select__active__title")
print(languages[0].text)

# 英語

# 翻訳前の文を記入

下記のコードで翻訳前の文を記入します.

# 英語を記入
en_text_area = driver.find_element_by_css_selector(".lmt__textarea.lmt__source_textarea.lmt__textarea_base_style") # 英語のテキストエリア
en_text_area.clear() # テキストエリアをクリア
en_text_area.send_keys("This is a pen.") # 英語記入
print(en_text_area.get_attribute("value")) # 記入した文字列確認

time.sleep(5) # 翻訳に要する時間を確保

# This is a pen.

# 翻訳後の文を出力

下記のコードで翻訳後の文を出力します.

# 和訳の確認
jp_text_area = driver.find_element_by_css_selector(".lmt__textarea.lmt__target_textarea.lmt__textarea_base_style")
print(jp_text_area.get_attribute("value"))

# 'これはペンです。'

# まとめ

以上で,Python+Selenium+ChromeでDeepLの翻訳を実行しました.

ただ,やりすぎると途中で止められるので,改善は必要です.

# 参考サイト

10分で理解する Selenium (opens new window)
Docker上でSeleniumとHeadless ChromeとPython3を動かす (opens new window)
Dockerコンテナからseleniumを使ってスクレイピング (opens new window)
Python×SeleniumでWebスクレイピング実践 (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

YouTube Data API を使って1つの動画から様々な情報を取得する

YouTube Data API を使って1つの動画から様々な情報を取得する

YouTube Data API を使って1つの動画から様々な情報を取得します.

Vuepressで動画を貼れるようにする

Vuepressで動画を貼れるようにする

Vuepressで動画を貼れるようにします.