Вопрос по google-translate, python – https://github.com/mouuff/Google-Translate-API

3

аюсь использовать Google Translate из сценария Python:

#!/usr/bin/env python
from urllib2 import urlopen
from urllib import urlencode

base_url = "http://www.google.com/translate?"
params = (('langpair','en|es'), ('u','http://asdf.com'),)
url = base_url+urlencode(params)
print "Encoded URL: %s" % url 
print urlopen(url).read()

Я получаю ошибку 403 при использовании.

# ./1.py 
Encoded URL: http://www.google.com/translate?langpair=en%7Ces&u=http%3A%2F%2Fasdf.com
Traceback (most recent call last):
...
urllib2.HTTPError: HTTP Error 403: Forbidden

Однако тот же URL-адрес работает нормально при доступе из браузера. Может ли кто-нибудь заметить ошибку? Или это то, что Google не позволяет этот тип использования?

заранее спасибо

Ваш Ответ

2   ответа
4

вы можете программно перевести исходный код обычного веб-сайта через API Google.

Я написал функцию для этого некоторое время назад:

def translate(text, src = '', to = 'en'):
  parameters = ({'langpair': '{0}|{1}'.format(src, to), 'v': '1.0' })
  translated = ''

  for text in (text[index:index + 4500] for index in range(0, len(text), 4500)):
    parameters['q'] = text
    response = json.loads(urllib.request.urlopen('http://ajax.googleapis.com/ajax/services/language/translate', data = urllib.parse.urlencode(parameters).encode('utf-8')).read().decode('utf-8'))

    try:
      translated += response['responseData']['translatedText']
    except:
      pass

  return translated
3

API, Я нашел и протестировал этот код, он работает:

#!/usr/bin/env python
from urllib2 import urlopen
from urllib import urlencode
import sys<p></p>

lang1=sys.argv[1] lang2=sys.argv[2] langpair='%s|%s'%(lang1,lang2) text=' '.join(sys.argv[3:]) base_url='http://ajax.googleapis.com/ajax/services/language/translate?' params=urlencode( (('v',1.0), ('q',text), ('langpair',langpair),) ) url=base_url+params content=urlopen(url).read() start_idx=content.find('"translatedText":"')+18 translation=content[start_idx:] end_idx=translation.find('"}, "') translation=translation[:end_idx] print translation

source

Однако это для перевода текста, а не веб-страницы (оставляя HTML-теги неактивными). Можно ли перевести веб-страницу вместо текста? facha
Вы пробовали код @ Blender? Brian O'Dell

Похожие вопросы