перевести URL с помощью Google перевести из скрипта Python - PullRequest
3 голосов
/ 03 мая 2011

Я пытаюсь использовать 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 не позволяет этот тип использования?

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

Ответы [ 4 ]

4 голосов
/ 03 мая 2011

Если Google не позволяет вам сделать это, вы можете программно перевести исходный код обычного веб-сайта через 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 голосов
/ 03 мая 2011

Вы должны использовать Google API .Я нашел и протестировал этот код, он работает:

<code>#!/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

источник

1 голос
/ 03 мая 2011

Вы хотите использовать официальные API Google Translate:

http://code.google.com/intl/de-DE/apis/language/translate/overview.html

Кроме этого:

http://www.catonmat.net/blog/python-library-for-google-search/

0 голосов
/ 24 апреля 2015

ваша проблема в том, что у вас нет заголовков

(который сообщает Google, каков ваш браузер и совместимость)

У меня была эта ошибка раньше, когда я сделал свой переводчик Google API

вы можете найти здесь: https://github.com/mouuff/Google-Translate-API

...