googletrans 停止工作,错误为“NoneType”对象没有属性“group”

2025-01-15 08:45:00
admin
原创
89
摘要:问题描述:我试过了googletrans,运行得很好。从今天早上开始,我开始收到以下错误。我查看了 stackoverflow 和其他网站上的多个帖子,发现我的 IP 可能被禁止使用该服务一段时间了。我尝试使用具有不同 IP 的多个服务提供商互联网,但仍然遇到相同的问题?我也尝试googletrans在不同的...

问题描述:

我试过了googletrans,运行得很好。从今天早上开始,我开始收到以下错误。我查看了 stackoverflow 和其他网站上的多个帖子,发现我的 IP 可能被禁止使用该服务一段时间了。我尝试使用具有不同 IP 的多个服务提供商互联网,但仍然遇到相同的问题?我也尝试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'

解决方案 1:

更新 06.12.20:发布了带有修复程序的 googletrans 新“官方”alpha 版本

像这样安装 alpha 版本:

pip install googletrans==3.1.0a0

翻译示例:

translator = Translator()
translation = translator.translate("Der Himmel ist blau und ich mag Bananen", dest='en')
print(translation.text)
#output: 'The sky is blue and I like bananas'

如果它不起作用,请尝试像这样指定服务网址:

from googletrans import Translator
translator = Translator(service_urls=['translate.googleapis.com'])
translator.translate("Der Himmel ist blau und ich mag Bananen", dest='en')

有关详细信息和更新,请参阅此处的讨论:https://github.com/ssut/py-googletrans/pull/237

更新 10.12.20:发布了另一个修复程序

正如 @DesiKeki 和 @Ahmed Breem 指出的那样,还有另一种修复方法似乎对一些人有效:

pip install googletrans==4.0.0-rc1

Github 讨论在这里: https: //github.com/ssut/py-googletrans/issues/234#issuecomment-742460612

如果上述修复方法对你不起作用

如果上述方法对您不起作用,google_trans_new这似乎是一个对某些人有效的好选择。目前尚不清楚为什么上述修复对某些人有效,而对其他人无效。有关安装和使用的详细信息,请参阅此处:https://github.com/lushan88a/google_trans_new

#pip install google_trans_new

from google_trans_new import google_translator  
translator = google_translator()  
translate_text = translator.translate('สวัสดีจีน',lang_tgt='en')  
print(translate_text)
#output: Hello china

解决方案 2:

更新于 2020 年 1 月 12 日:此问题最近再次出现,(显然)再次由 Google 翻译 API 的一些更改引起。

Github 问题中再次讨论了解决方案。尽管目前还没有明确的解决方案,但 Pull 请求似乎正在解决这个问题:https://github.com/ssut/py-googletrans/pull/237

在等待其获得批准时,我们可以像这样安装:

$ pip uninstall googletrans
$ git clone https://github.com/alainrouillon/py-googletrans.git
$ cd ./py-googletrans
$ git checkout origin/feature/enhance-use-of-direct-api
$ python setup.py install

原始答案

显然这是 Google 最近发现的一个普遍问题。引用 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 <-- 提交请求以修复该问题

要应用此补丁(无需等待拉取请求被接受),只需从分叉的 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.

解决方案 3:

不幸的是,尽管提出了许多修复建议,但我还是无法得到它们,googletrans也无法工作。google_trans_new

我的解决方案是切换到deep_translator包:

pip install -U deep-translator

然后你可以像这样使用它:

>>> from deep_translator import GoogleTranslator
>>> GoogleTranslator(source='auto', target='de').translate("keep it up, you are awesome") 
'weiter so, du bist toll'

请参阅文档以了解更多信息。

解决方案 4:

尝试 google_trans_new。它帮我解决了这个问题
https://github.com/lushan88a/google_trans_new

pip install google_trans_new

from google_trans_new import google_translator  
  
translator = google_translator()  
translate_text = translator.translate('Hola mundo!', lang_src='es', lang_tgt='en')  
print(translate_text)
-> Hello world!

解决方案 5:

到这个答案时,您可以用以下方法解决它:

卸载已安装的版本

pip uninstall googletrans

安装以下版本

pip install googletrans==4.0.0rc1

我希望这对你也有效,就像对我有用一样。

您现在可以尝试一下:

from googletrans import Translator
translator = Translator()
ar = translator.translate('مرحبا').text
print(ar)

注意4.0.0rc1使用的是旧版本httpx,如果您遇到与此相关的错误,则需要编辑文件client.py,修复httpcore.SyncHTTPTransporthttpcore.AsyncHTTPProxy

解决方案 6:

截至 2021 年 9 月的更新答案

pip uninstall googletrans==4.0.0-rc1

pip install googletrans==3.1.0a0

3.1.0a0 版本也支持批量翻译!

解决方案 7:

更新 10.12.20:发布新的 Alpha 版本(稳定候选版本):4.0.0-rc1

可以按如下方式安装:

pip install googletrans==4.0.0-rc1

用法:

translation = translator.translate('이 문장은 한글로 쓰여졌습니다.', dest='en')
print(translation.text)
>>This sentence is written in Korean.
detected_lang = translator.detect('mein english me hindi likh raha hoon')
print(detected_lang)
>>Detected(lang=hi, confidence=None)
detected_lang = translator.detect('이 문장은 한글로 쓰여졌습니다.')
print(detected_lang)
>>Detected(lang=ko, confidence=None)

解决方案 8:

以下是 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

解决方案 9:

这对我有用:

pip install googletrans==4.0.0-rc1

原始答案可以在这里找到:
https: //github.com/ssut/py-googletrans/issues/234#issuecomment-742460612

解决方案 10:

修复在这里https://pypi.org/project/py-translator/

$ pip3 安装 py_translator==1.8.9

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

出:你好,我的朋友

解决方案 11:

pip uninstall googletrans googletrans-temp
pip install googletrans-temp

自 2019.2.24 起,它在 Win10 和 Ubuntu 16 (Python 3.6) 中对我有用 - 请参阅https://github.com/ssut/py-googletrans/issues/94中的一条回复。旧修复程序pip install git+https://github.com/BoseCorp/py-googletrans.git --upgrade在这里不再起作用。

解决方案 12:

最新的 Python 不支持 googletrans,因此你需要卸载它

安装新的 googletrans ( pip install googletrans==3.1.0a0)

解决方案 13:

这就是我解决问题的方法。

pip3 uninstall googletrans
pip3 install googletrans==3.1.0a0

首先需要卸载以前的版本,然后安装3.1.0版本。

解决方案 14:

使用此处的翻译包

  1. 有用 (;

  2. 支持谷歌以外的更多平台

安装:

pip install translators --upgrade

用法:


    >>> import translators as ts
    Using Israel server backend.
    >>> ts.google('שלום' , to_language = 'es')
    'Hola'
    

解决方案 15:

对 gtoken 进行以下更改使其对我有用:

RE_TKK = re.compile(r'tkk:\'(.+?)\'')      

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
    r = self.session.get(self.host)        

    self.tkk = self.RE_TKK.findall(r.text)[0]

    now = math.floor(int(time.time() * 1000) / 3600000.0)
    if self.tkk and int(self.tkk.split('.')[0]) == now:
        return

    # this will be the same as python code after stripping out a reserved word 'var'
    code = unicode(self.RE_TKK.search(r.text).group(1)).replace('var ', '')
    # unescape special ascii characters such like a x3d(=)

我从这里的票上获得了这个片段。

请注意,这与 Kerem 之前建议的其他更改略有不同。

对于像我一样的新手,可以在使用 Anaconda 的 Windows 计算机上的 AppData\Local\Continuum\anaconda3\site-packages\googletrans 中找到 gtoken.py。要查找 AppData,请进入文件资源管理器中的地址栏,输入“%AppData%”,然后按 Enter。

解决方案 16:

事实证明,将调用放在 try/except 块中可以解决我的问题

try:
    langs = translator.detect(update.message.text)
    if langs.lang == 'en':
        foo(translator.translate(update.message.text,dest='zh-cn').text)
    else:
        bar(translator.translate(update.message.text,dest='en').text)
except Exception as e:
    print(e)

解决方案 17:

如果您正在使用 Google Colab 或 Jupyter Notebook,请运行:

!pip uninstall googletrans

重启运行时,然后执行:

!pip install googletrans==4.0.0rc1

解决方案 18:

尝试-pip install googletrans==3.1.0a0

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用