PythonでGoogle翻訳(RequestsでHTTP通信)
参考:
Google Translate API、無料で使えるか-Qiita
sentence = 'i wanna see you' url = "https://translate.google.com/translate_a/single" headers = { "User-Agent": "GoogleTranslate/5.9.59004 (iPhone; iOS 10.2; ja; iPhone9,1)" } params = { "client": "it", "dt": ["t", "rmt", "bd", "rms", "qca", "ss", "md", "ld", "ex"], "dj": "1", "q": sentence, "tl": "ja" } res = requests.get(url=url, headers=headers, params=params) res = res.json() print(f'英語:{sentence}\t日本語:{res["sentences"][0]["trans"]}')
英語:i wanna see you 日本語:あなたに会いたい
ポイントは「User-Agent」なのかなと.これじゃないと,jsonをゲットできない(と思う).一部パラメータの意味がよく分からない.
例えば,愚直にPythonからGoogle翻訳を使おうと思うと,ブラウザでGoogle翻訳にアクセスするのと同様に,
url = 'https://translate.google.co.jp/?client=ubuntu&channel=fs&oe=utf-8&hl=ja&um=1&ie=UTF-8&hl=ja&client=tw-ob#en/ja/' headers = { "User-Agent": "Chrome/58.0.3029.110" } params = { 'q': 'i wanna see you' } r = requests.get(url, headers=headers, params=params)
と書ける.ただ,これだと,
r.json()
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
になる.なので,「r.text()」から該当箇所を探してくる必要がある.
r.text()は
‘
・
・
・
中略
・
・
・
\’,\’mt\’],[\’mi\’,\’en\’],[\’en\’,\’mi\’],[\’haw\’,\’en\’],[\’en\’,\’haw\’],[\’sm\’,\’en\’],[\’en\’,\’sm\’],[\’yo\’,\’en\’],[\’en\’,\’yo\’],[\’ig\’,\’en\’],[\’en\’,\’ig\’],[\’ha\’,\’en\’],[\’en\’,\’ha\’],[\’be\’,\’en\’],[\’en\’,\’be\’],[\’fy\’,\’en\’],[\’en\’,\’fy\’],[\’ht\’,\’en\’],[\’en\’,\’ht\’],[\’lb\’,\’en\’],[\’en\’,\’lb\’],[\’mg\’,\’en\’],[\’en\’,\’mg\’],[\’yi\’,\’en\’],[\’en\’,\’yi\’],[\’hmn\’,\’en\’],[\’en\’,\’hmn\’],[\’so\’,\’en\’],[\’en\’,\’so\’],[\’tg\’,\’en\’],[\’en\’,\’tg\’],[\’tk\’,\’en\’],[\’en\’,\’tk\’],[\’tt\’,\’en\’],[\’en\’,\’tt\’],[\’ug\’,\’en\’],[\’en\’,\’ug\’],[\’cy\’,\’en\’],[\’en\’,\’cy\’],[\’eo\’,\’en\’],[\’en\’,\’eo\’],[\’ga\’,\’en\’],[\’en\’,\’ga\’],[\’gd\’,\’en\’],[\’en\’,\’gd\’],[\’la\’,\’en\’],[\’en\’,\’la\’],[\’or\’,\’en\’],[\’en\’,\’or\’]];window.jstiming.load.tick(\’prt\’);/translate/releases/twsfe_w_20170522_RC01/r/js/desktop_module_main.jsInit();
ピンバック: requestsとreでJPX日経インデックス400の銘柄一覧を取得 | 粉末@それは風のように (日記)