【问题标题】:translate url with google translate from python script用谷歌翻译 url 从 python 脚本翻译
【发布时间】:2011-05-03 15:15:28
【问题描述】:

我正在尝试通过 python 脚本使用谷歌翻译:

#!/usr/bin/env python
from urllib2 import urlopen
from urllib import urlencode

base_url = "http://www.google.com/translate?"
params = (('langpair','en|es'), ('u','http://asdf.com'),)
url = base_url+urlencode(params)
print "Encoded URL: %s" % url 
print urlopen(url).read()

我在使用它时收到错误 403。

# ./1.py 
Encoded URL: http://www.google.com/translate?langpair=en%7Ces&u=http%3A%2F%2Fasdf.com
Traceback (most recent call last):
...
urllib2.HTTPError: HTTP Error 403: Forbidden

但是,从浏览器访问时,相同的 URL 可以正常工作。谁能发现错误?还是google不允许这种用法?

提前致谢

【问题讨论】:

    标签: python google-translate


    【解决方案1】:

    如果 Google 不允许您这样做,您可以通过 Google 的 API 以编程方式翻译正常网站的源代码。

    不久前我为此写了一个函数:

    def translate(text, src = '', to = 'en'):
      parameters = ({'langpair': '{0}|{1}'.format(src, to), 'v': '1.0' })
      translated = ''
    
      for text in (text[index:index + 4500] for index in range(0, len(text), 4500)):
        parameters['q'] = text
        response = json.loads(urllib.request.urlopen('http://ajax.googleapis.com/ajax/services/language/translate', data = urllib.parse.urlencode(parameters).encode('utf-8')).read().decode('utf-8'))
    
        try:
          translated += response['responseData']['translatedText']
        except:
          pass
    
      return translated
    

    【讨论】:

      【解决方案2】:

      您应该使用谷歌API。我找到并测试了这段代码,它可以工作:

      #!/usr/bin/env python
      from urllib2 import urlopen
      from urllib import urlencode
      import sys
      
      

      lang1=sys.argv[1] lang2=sys.argv[2] langpair='%s|%s'%(lang1,lang2) text=' '.join(sys.argv[3:]) base_url='http://ajax.googleapis.com/ajax/services/language/translate?' params=urlencode( (('v',1.0), ('q',text), ('langpair',langpair),) ) url=base_url+params content=urlopen(url).read() start_idx=content.find('"translatedText":"')+18 translation=content[start_idx:] end_idx=translation.find('"}, "') translation=translation[:end_idx] print translation

      source

      【讨论】:

      • 但是这是翻译文本,而不是网页(使 html 标签无效)。是否可以翻译网页而不是文本?
      【解决方案3】:

      【讨论】:

      • 如何使用 google api 翻译整个网页(不是文本)?
      【解决方案4】:

      你的问题是因为你没有标题

      (告诉谷歌你的浏览器和兼容性是什么)

      我在制作谷歌翻译 api 之前遇到了这个错误

      你可以在这里找到它:https://github.com/mouuff/Google-Translate-API

      【讨论】:

        猜你喜欢
        • 2012-03-13
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        • 2016-11-18
        相关资源
        最近更新 更多