HTTPError:HTTP错误503:服务不可用goslate语言检测请求:Python

时间:2015-10-13 15:56:17

标签: python http-error http-status-code-503 goslate

我刚开始使用Python中的goslate库来检测文本中单词的语言,但在测试了7-8个输入后,我给出了输入,其中包含用阿拉伯语和英语两种语言书写的单词。之后,它开始给我错误。

Public Class DateGridModels
  Public Property FirstName() As String
  Public Property LastName() As String
End Class

我把代码编写为:

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

现在它根本没有用于我之前测试的任何输入,并且给我同样的错误。 我尝试在谷歌上找到错误解决但没有任何帮助。这是我发现的: Link 1 - StackOverflow

我尝试使用上面的链接中建议的命令更新它:

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


gs = goslate.Goslate()

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

print (gs.get_languages()[language_id])

但它没有帮助,因为它已经是我正在使用的最新版本。另外,我在图书馆文档中读到,在以下情况下会出现这种翻译错误:

pip install -U goslate

我尝试使用代理连接,但没有任何帮助。

修改 原因可能是Google每天只允许一些请求吗?在那种情况下,可以做得更好吗?有没有其他基于Python的库可以帮我解决这个问题?

4 个答案:

答案 0 :(得分:11)

也许正在寻找: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!')

&#34; py-translate是用Python编写的谷歌翻译的CLI工具!&#34;

翻译函数的第一个参数是源语言,第二个是目标语言,第三个是要翻译的短语,

它返回一个字典,文档将其称为请求接口

答案 1 :(得分:10)

在2016年1月5日的文档更新中,作者说他们不会更新Goslate以覆盖Google API访问控制:

  

Google最近使用故障单机制更新了其翻译服务,以防止像goslate这样的简单抓取程序访问。虽然更复杂的爬虫可能仍然在技术上工作,但它在使用服务和破坏服务之间会越过细微之处。 goslate将不会更新以打破谷歌的票务机制。免费午餐结束了。感谢您使用。

谷歌批准在您的计划中使用谷歌翻译的官方方式是付费Google Cloud Translation API。除此之外,您还将与谷歌的速率限制和机器人检测作斗争。

答案 2 :(得分:6)

详细阐述@ programmer44的回答,这是一个使用own来解决这个特例的例子:

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

答案 3 :(得分:2)

由于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