Python
Selenium
PhantomJS
python3
google翻訳

Selenium+PhantomJSで無料の翻訳APIっぽいことを実現する

はじめに

精度の高い翻訳APIを利用しようとすると、どうしても有料のAPIということになってしまい苦学生にはなかなか厳しい…

そこでをSelenium+PhantomJSで無料で翻訳APIっぽいことを実現します。

準備

今回はPython3.6で実装していきます。

まず作業用のディレクトリを作成します。

$ mkdir free_translate
$ cd free_translate

Seleniumをインストールします。

$ pip install selenium

PhantomJSをインストールします。

$ npm install phantomjs --save

コード

translate.py
from selenium import webdriver
import time
import sys
import os

def translate(q):
    url = 'https://translate.google.co.jp/?hl=ja&tab=TT#ja/en/'

    user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
    pjs_path = 'node_modules/phantomjs/bin/phantomjs'
    dcap = {
        "phantomjs.page.settings.userAgent": user_agent,
        'marionette': True
    }
    log_name = os.path.abspath(os.path.dirname(__file__)) + '/ghostdriver.log'
    driver = webdriver.PhantomJS(executable_path=pjs_path, desired_capabilities=dcap, service_log_path=log_name)
    driver.get(url)
    input_form = driver.find_element_by_id('source')
    input_form.send_keys(q)
    time.sleep(0.5 * len(q))
    result_form = driver.find_elements_by_id('result_box')
    result = ''
    for i in result_form:
        if i.text:
            result = i.text
            break
    driver.quit()
    return result

if __name__ == '__main__':
    print(translate(' '.join(sys.argv[1:])))

実行

$ python translate.py こんにちは世界
Hello world

実行すると初回警告が出ますが許可して大丈夫です。

最後に

無料で翻訳できましたが、とにかく遅い。APIを使うほうが現実的だと思います。