web-dev-qa-db-ja.com

HTTPError:HTTPエラー503:サービスが利用できないgoslate言語検出リクエスト:Python

Python=でgoslateライブラリの使用を開始したばかりですが、テキスト内の単語の言語を検出しますが、7〜8の入力についてテストした後、単語を2つに記述した入力を提供しました言語、アラビア語、英語。その後、エラーが出始めました。

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])

そして今、以前にテストした入力に対してはまったく機能せず、同じエラーが発生しています。私はグーグルでエラー解決を見つけようとしましたが、何も助けにはなりませんでした。これは私が見つけたものです: Link 1-StackOverflow

上記のリンクでも提案されているように、コマンドで更新してみました:

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

プロキシ接続を使用してみましたが、何も役に立ちませんでした。

[〜#〜] edit [〜#〜]Googleが1日にリクエストできるリクエストの数が限られているためでしょうか?その場合、何ができるのでしょうか?これを解決するのに役立つ他のPythonベースのライブラリはありますか?

15
POOJA GUPTA

著者は、2016年1月5日のドキュメントの更新で、Google APIアクセス制御を回避するためにGoslateを更新しないと述べています:

Googleは最近、goslateのような単純なクローラープログラムがアクセスできないようにするために、チケットメカニズムで翻訳サービスを更新しました。より洗練されたクローラーでも技術的には機能する可能性がありますが、サービスの使用とサービスの停止の間の微妙な境界を超えていました。 goslateは、Googleのチケットメカニズムを壊すように更新されません。無料ランチは終了しました。使用していただきありがとうございます。

プログラムでGoogle翻訳を使用するための、Google承認の公式な方法は、有料 Google Cloud Translation API を使用することです。それ以外の場合は、Googleのレート制限とボット検出と戦うことになります。

10
Matheus Araujo

多分これを探しています: https://pypi.python.org/pypi/textblob ゴスレートよりも良いです、

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は、Pythonで記述されたGoogle翻訳用のCLIツールです!」

トランスレータ関数の最初の引数はソース言語、2番目はターゲット言語、3番目は翻訳する語句です。

ドキュメントをリクエストインターフェースと呼ぶ辞書を返します

11
programmer44

@ programmer44の回答について詳しく説明すると、この特定のケースでの TextBlob の使用例を次に示します。

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

TextBlobは私にとってもう機能していないようです。私は langdetect を使用していますが、これは問題なく動作します。

彼らのドキュメントに示されているように:

from langdetect import detect

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

戻ります

en
de
2
Philippe Oger