はじめに
精度の高い翻訳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を使うほうが現実的だと思います。