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

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

问题描述

我正在尝试学习 python,所以我决定编写一个脚本,可以使用谷歌翻译来翻译一些东西.直到现在我写了这个:

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.

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

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