Googletrans无法工作,出现错误“NoneType”对象没有属性'group'。

2024-03-29 09:14:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着googletrans,效果很好。从今天早上起我就开始犯错误了。我浏览了stackoverflow和其他网站的多篇文章,发现我的ip可能在一段时间内被禁止使用该服务。我尝试使用多个服务提供商的互联网,有不同的ip和stil面临相同的问题?我也试着在不同的笔记本电脑上使用googletrans,仍然是同一个问题..是googletrans软件包坏了还是谷歌在他们的终端做了什么?

>>> from googletrans import Translator
>>> translator = Translator()
>>> translator.translate('안녕하세요.')

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    translator.translate('안녕하세요.')
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/client.py", line 172, in translate
    data = self._translate(text, dest, src)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/client.py", line 75, in _translate
    token = self.token_acquirer.do(text)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/gtoken.py", line 180, in do
    self._update()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/gtoken.py", line 59, in _update
    code = unicode(self.RE_TKK.search(r.text).group(1)).replace('var ', '')
AttributeError: 'NoneType' object has no attribute 'group'

Tags: inpyselflibpackageslinelibrarysite
2条回答

下面是对这个问题的一个非正式的解决方案,正如Darkblader24在:https://github.com/ssut/py-googletrans/pull/78

更新gtoken.py如下:

    RE_TKK = re.compile(r'TKK=eval\(\'\(\(function\(\)\{(.+?)\}\)\(\)\)\'\);',
                        re.DOTALL)
    RE_RAWTKK = re.compile(r'TKK=\'([^\']*)\';',re.DOTALL)

    def __init__(self, tkk='0', session=None, host='translate.google.com'):
        self.session = session or requests.Session()
        self.tkk = tkk
        self.host = host if 'http' in host else 'https://' + host

    def _update(self):
        """update tkk
        """
        # we don't need to update the base TKK value when it is still valid
        now = math.floor(int(time.time() * 1000) / 3600000.0)
        if self.tkk and int(self.tkk.split('.')[0]) == now:
            return

        r = self.session.get(self.host)

        rawtkk = self.RE_RAWTKK.search(r.text)
        if rawtkk:
            self.tkk = rawtkk.group(1)
            return

显然,这是谷歌方面近期普遍存在的问题。 引用各种Github讨论,当Google直接向您发送原始令牌时就会发生这种情况。

现在正在讨论,已经有一个请求修复它,所以应该在未来几天内解决。

有关参考,请参见:

https://github.com/ssut/py-googletrans/issues/48<;——Github repo上报告的完全相同的问题 https://github.com/pndurette/gTTS/issues/60<;——文本到语音库上似乎存在相同的问题 https://github.com/ssut/py-googletrans/pull/78<;--请求修复问题

要应用此修补程序(无需等待pull请求被接受),只需从分叉repo安装库https://github.com/BoseCorp/py-googletrans.git(首先卸载正式库):

$ pip uninstall googletrans
$ git clone https://github.com/BoseCorp/py-googletrans.git
$ cd ./py-googletrans
$ python setup.py install

您可以在系统上的任何位置克隆它,并在全局范围内或在virtualenv中安装它。

固定在这里https://pypi.org/project/py-translator/

$pip3安装py_转换器==1.8.9

from py_translator import Translator
s = Translator().translate(text='Hello my friend', dest='es').text
print(s)

out:Hola mi amigo

相关问题 更多 >