Подтвердить что ты не робот

HTTPError: ошибка HTTP 503: служба Недоступен запрос на обнаружение языка goslate: Python

Я только что начал использовать библиотеку goslate в python для определения языка слов в тексте, но после тестирования его на 7-8 входов я дал вклад, в котором были написаны слова на двух языках арабский и английский. После этого он начал давать мне ошибку.

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    execfile("C:/test_goslate.py");
  File "C:/test_goslate.py", line 12, in <module>
    language_id = gs.detect('الدولة')
  File "C:\Python27\lib\site-packages\goslate.py", line 484, in detect
    return self._detect_language(text)
  File "C:\Python27\lib\site-packages\goslate.py", line 448, in _detect_language
    return self._basic_translate(text[:50].encode('utf-8'), 'en', 'auto')[1]
  File "C:\Python27\lib\site-packages\goslate.py", line 251, in _basic_translate
    response_content = self._open_url(url)
  File "C:\Python27\lib\site-packages\goslate.py", line 181, in _open_url
    response = self._opener.open(request, timeout=self._TIMEOUT)
  File "C:\Python27\lib\urllib2.py", line 410, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 503: Service Unavailable

Я написал код как:

# -*- coding: utf8 -*-
import urllib2
import goslate


gs = goslate.Goslate()

language_id = gs.detect('wait الدولة')

print (gs.get_languages()[language_id])

и теперь он не работает вообще для любого ввода, который я тестировал ранее, и дает мне такую ​​же ошибку. Я попытался найти ошибку в google, но ничего не помогло. Вот что я нашел: qaru.site/info/454897/...

Я попробовал обновить его с помощью команды, также предложенной в ссылке выше:

pip install -U goslate

но это не помогло, поскольку это уже самая новая обновленная версия, которую я использую. Также я прочитал в библиотечной документации, что вы получаете такую ​​ошибку для перевода, когда:

If you get HTTP 5xx error, it is probably because google has banned your client IP address from transation querying.

You could verify it by access google translation service in browser manually.

You could try the following to overcome this issue:

query through a HTTP/SOCK5 proxy, see Proxy Support
using another google domain for translation: gs = Goslate(service_urls=['http://translate.google.de'])
wait for 3 seconds before issue another querying

Я пробовал использовать прокси-соединение, но ничего не помогло.

ИЗМЕНИТЬ  Может быть, причина в том, что Google разрешает только некоторое количество запросов в день? В таком случае, что можно сделать лучше? Есть ли другая библиотека на основе python, которая может помочь мне решить эту проблему?

Пожалуйста, помогите мне в этом. Я новичок в этом.

4b9b3361

Ответ 1

В обновлении документации от 05 января 2016 года автор говорит, что они не будут обновлять Goslate для преодоления контроля доступа к API Google:

Недавно Google недавно обновил свою службу переводов с помощью механизма билета, чтобы предотвратить доступ к простой программе-искателю, такой как goslate. Хотя более сложный искатель может по-прежнему работать технически, однако он пересек бы тонкую грань между использованием сервиса и нарушением службы. goslate не будет обновляться, чтобы разбить механизм билетов googles. Свободный обед закончился. Спасибо за использование.

Ответ 2

возможно, для этого: https://pypi.python.org/pypi/textblob лучше, чем goslate,

Так как textblob заблокирован на данный момент, возможно, py-translate может сделать трюк,

https://pypi.python.org/pypi/py-translate/#downloads

http://pythonhosted.org/py-translate/devs/api.html

from translate import translator
translator('en', 'es', 'Hello World!')

"py-translate - это инструмент CLI для Google Translate, написанный на Python!"

первым аргументом функции переводчика является исходный язык, второй - целевой язык, а третья - фраза для перевода,

он возвращает словарь, который документация называется интерфейсом запроса

Ответ 3

Разрабатывая ответ на @programmer44, вот пример использования TextBlob для данного конкретного случая:

from textblob.blob import TextBlob
blob = TextBlob('wait الدولة')
print(blob.detect_language())

Ответ 4

Так как TextBlob больше не работает для меня больше. Я использую langdetect, который отлично работает.

Как показано в их документации:

from langdetect import detect

print detect("War doesn't show who right, just who left.")
print detect("Ein, zwei, drei, vier")

вернет

en
de