本文主要是介绍python3.6下调用googletrans翻译超时报错问题解决(改为py_translator+修改源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在最前面:
由于经常用到Google翻译,想着使用python调用googletrans进行翻译。
很简单的调用,看代码
from py_translator import Translator
s = Translator().translate(text='Hello my friend',dest='zh-cn').text
print(s)
然后控制台一直没反应,等了好久超时。
网上找了一圈,类似这种报错的
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 translatedata = self._translate(text, dest, src)File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/client.py", line 75, in _translatetoken = self.token_acquirer.do(text)File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/gtoken.py", line 180, in doself._update()File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/googletrans/gtoken.py", line 59, in _updatecode = unicode(self.RE_TKK.search(r.text).group(1)).replace('var ', '')
AttributeError: 'NoneType' object has no attribute 'group'
我一开始也遇到过,当时我的代码是
from googletrans import Translator
translator = Translator(service_urls=['translate.google.cn'])
source = '我还是不开心!'
text = translator.translate(source,src='zh-cn',dest='en').text
print(text)
这是网上的例子,有大神给出的解决办法是
$ pip uninstall googletrans
$ git clone https://github.com/BoseCorp/py-googletrans.git
$ cd ./py-googletrans
$ python setup.py install
其实不用这么复杂,只要这里改一下即可
translator = Translator()
这样的确是不报错了,可是超时
然后又有一位大神说,不要用googletrans,要用py_translator==1.8.9
至于版本一定要用1.8.9么,我没有验证过,有兴趣的同学可以研究下
$ pip3 install py_translator==1.8.9
注意,此时的调用应该是
from py_translator import Translator
还是超时!!!
其实应该修改源码,把py_translator中的gtoken.py,urls.py 和client.py中的 translate.google.com 修改为 translate.google.cn即可
运行一下
朋友你好
修改源码不用讲了吧,找到py_translator中的gtoken.py,urls.py 和client.py,用文本编辑框改一下即可,举个栗子
def __init__(self, tkk='0', session=None, host='translate.google.com'):self.session = session or requests.Session()self.tkk = tkkself.host = host if 'http' in host else 'https://' + host
把
translate.google.com
改为
translate.google.cn
记得三个都要改,注释的可以不改,都改了最好。
我怎么这么啰嗦。
这篇关于python3.6下调用googletrans翻译超时报错问题解决(改为py_translator+修改源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!