如何使用 json 谷歌翻译 api?

发布于 2024-07-26 22:54:39 字数 131 浏览 11 评论 0原文

我正在尝试使用来自 python 的 google 翻译和 utf-8 文本。 如何调用json api? 他们有一个将其嵌入 html 的文档,但我在任何地方都找不到合适的 API 或 wsdl。

谢谢 拉斐尔

I am trying to use google translate from python with utf-8 text.
How do I call the json api? They have a document for embedding it in html but I can't find a proper API or wsdl anywhere.

Thanks
Raphael

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

百思不得你姐 2024-08-02 22:54:39

这是最终对我有用的代码。
使用没有ajax api的网站可能会导致你的ip被禁止,所以这样更好。

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

# The google translate API can be found here:
# http://code.google.com/apis/ajaxlanguage/documentation/#Examples
def translate(text = 'hola querida'):
    tl="es"
    sl="en"
    langpair='%s|%s'%(tl,sl)



    base_url='http://ajax.googleapis.com/ajax/services/language/translate?'
    data = urllib.urlencode({'v':1.0,'ie': 'UTF8', 'q': text.encode('utf-8'),
                             'langpair':langpair})


    url = base_url+data

    search_results = urllib.urlopen(url)

    json = simplejson.loads(search_results.read())


    result = json['responseData']['translatedText']
    return result

Here is the code that finally works for me.
Using the website without the ajax api can get your ip banned, so this is better.

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

# The google translate API can be found here:
# http://code.google.com/apis/ajaxlanguage/documentation/#Examples
def translate(text = 'hola querida'):
    tl="es"
    sl="en"
    langpair='%s|%s'%(tl,sl)



    base_url='http://ajax.googleapis.com/ajax/services/language/translate?'
    data = urllib.urlencode({'v':1.0,'ie': 'UTF8', 'q': text.encode('utf-8'),
                             'langpair':langpair})


    url = base_url+data

    search_results = urllib.urlopen(url)

    json = simplejson.loads(search_results.read())


    result = json['responseData']['translatedText']
    return result
三生殊途 2024-08-02 22:54:39

使用 Peteris Kramins 的 xgoogle(他的博客

>>> from xgoogle.translate import Translator
>>>
>>> translate = Translator().translate
>>>
>>> print translate("Mani sauc Pēteris", lang_to="en")
My name is Peter
>>>
>>> print translate("Mani sauc Pēteris", lang_to="ru").encode('utf-8')
Меня зовут Петр
>>>
>>> print translate("Меня зовут Петр")
My name is Peter

Use xgoogle from Peteris Kramins (His blog)

>>> from xgoogle.translate import Translator
>>>
>>> translate = Translator().translate
>>>
>>> print translate("Mani sauc Pēteris", lang_to="en")
My name is Peter
>>>
>>> print translate("Mani sauc Pēteris", lang_to="ru").encode('utf-8')
Меня зовут Петр
>>>
>>> print translate("Меня зовут Петр")
My name is Peter
何必那么矫情 2024-08-02 22:54:39

看看我发现了什么:http://code.google.com/ intl/ru/apis/ajaxlanguage/terms.html

这是有趣的部分:

您不会,也不会允许您的最终用户或其他第三方:
....
* 提交长度超过5000个字符的任何请求;
....

Look what I have found : http://code.google.com/intl/ru/apis/ajaxlanguage/terms.html

Here is the interesting part:

You will not, and will not permit your end users or other third parties to:
....
* submit any request exceeding 5000 characters in length;
....

ˇ宁静的妩媚 2024-08-02 22:54:39

我认为您正在谈论 ajax api http://code.google.com/apis/ajaxlanguage/ ,
必须从javascript使用,所以我不明白“google从python翻译”是什么意思

或者如果您需要使用python的翻译功能,您可以直接查询翻译页面并使用xml/html库解析它例如美丽的汤,html5lib

实际上我做过一次,美丽的汤在谷歌翻译上不起作用,但在 html5lib(http ://code.google.com/p/html5lib/

您是否需要执行类似的操作(从我的较大代码库复制)

def translate(text, tlan, slan="en"):

    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'translate.py/0.1')]

    htmlPage = opener.open(
            "http://translate.google.com/translate_t?" + 
            urllib.urlencode({'sl': slan, 'tl':tlan}),
            data=urllib.urlencode({'hl': 'en',
                                   'ie': 'UTF8',
                                   'text': text.encode('utf-8'),
                                   'sl': slan, 'tl': tlan})
        )

    parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("etree", cElementTree))

    etree_document = parser.parse(htmlPage)

    return _getResult(etree_document)

I think you are talking about the ajax api http://code.google.com/apis/ajaxlanguage/,
which has to be used from javascript, so I do not understand what do you mean by "google translate from python"

Alternatively if you need to use translate functionality from python, you can directly query the translate page and parse it using xml/html libs e.g. beautiful soup, html5lib

Actually I did that once and beautiful soup did not work on google translate but html5lib(http://code.google.com/p/html5lib/) did

you will need to do something like this (copied from my larger code base)

def translate(text, tlan, slan="en"):

    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent', 'translate.py/0.1')]

    htmlPage = opener.open(
            "http://translate.google.com/translate_t?" + 
            urllib.urlencode({'sl': slan, 'tl':tlan}),
            data=urllib.urlencode({'hl': 'en',
                                   'ie': 'UTF8',
                                   'text': text.encode('utf-8'),
                                   'sl': slan, 'tl': tlan})
        )

    parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("etree", cElementTree))

    etree_document = parser.parse(htmlPage)

    return _getResult(etree_document)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文