通过Google翻译进行翻译的Python脚本 [英] Python script to translate via google translate
问题描述
我正在尝试学习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屋!