エクセル上の日本語文章を英語に翻訳し、翻訳結果を自動反映させて保存したい場合のサンプルプログラムです。A列に翻訳元となる日本語文章があらかじめ入力されていて、B列に翻訳結果となる英語文章が入力されていく想定です。
あらかじめ以下をインストールしておきます。
webスクレイピングライブラリ↓
!pip install selenium
エクセル操作をするためのライブラリ
!pip install openpyxl
サンプルコード
from selenium import webdriver
from selenium.webdriver.common.by import By
from openpyxl import load_workbook
import time
import urllib.parse
# web(Google翻訳ページ)にアクセスして翻訳結果を取得する
def translate_text(text):
driver = webdriver.Chrome()
text_for_url = urllib.parse.quote_plus(text, safe='')
# URLに翻訳したいテキストを埋め込む
url = "https://translate.google.co.jp/#ja/en/{0}".format(text_for_url)
driver.get(url)
# 5秒間のタイプスリープ
time.sleep(5)
# 翻訳した英語文章を取得(セレクター指定部分は定期的に変わるのでデベロッパーツールで都度確認したい)
en = driver.find_element(By.CSS_SELECTOR, "span[jsname='jqKxS']")
return en.text
# エクセルから翻訳に必要なデータ取得
def get_excel_data(text_col, output_col):
# ファイル名を指定(以下はこのPythonファイルと同じフォルダ内にあることを前提としている)
wb = load_workbook('test.xlsx')
# シート名を指定
sheet = wb['Sheet1']
# A列の最終行を取得
max = sheet.max_row
while True:
if sheet.cell(row=max, column=text_col).value == None:
max -= -1
else:
break
# データ開始行から最終行までをループ
for i in range(2, max):
text = sheet.cell(row=i, column=text_col).value
if not text is None:
translate_text = translate_text(text)
sheet.cell(row=i, column=output_col).value = translate_text
wb.save('test.xlsx')
wb.close()
get_excel_data(1, 2) # 引数:(翻訳元文章が入力されている列, 翻訳結果を入力する列)
コメント