業務改善 web開発 programming 旅行系記事多め。

Python/SeleniumでGoogle翻訳結果をExcelに自動入力

google translatePython

エクセル上の日本語文章を英語に翻訳し、翻訳結果を自動反映させて保存したい場合のサンプルプログラムです。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)  # 引数:(翻訳元文章が入力されている列, 翻訳結果を入力する列)

コメント

タイトルとURLをコピーしました