通过Google翻译进行翻译的Python脚本 [英] Python script to translate via google translate

查看:117
本文介绍了通过Google翻译进行翻译的Python脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试学习python,所以我决定编写一个脚本,可以使用Google翻译来翻译某些内容.直到现在我都写了:

I'm trying to learn python, so I decided to write a script that could translate something using google translate. Till now I wrote this:

import sys
from BeautifulSoup import BeautifulSoup
import urllib2
import urllib

data = {'sl':'en','tl':'it','text':'word'} 
request = urllib2.Request('http://www.translate.google.com', urllib.urlencode(data))

request.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11')
opener = urllib2.build_opener()
feeddata = opener.open(request).read()
#print feeddata
soup = BeautifulSoup(feeddata)
print soup.find('span', id="result_box")
print request.get_method()

现在我被困住了.我看不到其中的任何错误,但仍然无法正常工作(因为我的意思是脚本可以运行,但无法翻译该词).

And now I'm stuck. I can't see any bugs in it, but it still doesn't work (by that I mean that the script will run, but it wont translate the word).

有人知道如何解决吗? (对不起,我的英语不好)

Does anyone know how to fix it? (Sorry for my poor English)

推荐答案

Google翻译旨在用于GET请求而不是POST请求.但是,如果将任何数据添加到请求中,urrllib2将自动提交POST.

Google translate is meant to be used with a GET request and not a POST request. However, urrllib2 will automatically submit a POST if you add any data to your request.

解决方案是使用查询字符串构造url,因此您将提交GET.
您需要更改代码的request = urllib2.Request('http://www.translate.google.com', urllib.urlencode(data))行.

The solution is to construct the url with a querystring so you will be submitting a GET.
You'll need to alter the request = urllib2.Request('http://www.translate.google.com', urllib.urlencode(data)) line of your code.

在这里:

querystring = urllib.urlencode(data)
request = urllib2.Request('http://www.translate.google.com' + '?' + querystring )

您将获得以下输出:

<span id="result_box" class="short_text">
    <span title="word" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor='#fff'">
        parola
    </span>
</span>

顺便说一句,您有点违反Google的服务条款;如果您要做的不只是破解一些用于训练的脚本,还可以研究它们.

如果可能的话,我强烈建议您远离urllib,并使用出色的 requests 库,该库将允许您有效地将HTTP与Python结合使用.

I strongly advise you to stay away from urllib if possible, and use the excellent requests library, which will allow you to efficiently use HTTP with Python.

这篇关于通过Google翻译进行翻译的Python脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆