修改在python3.2下测试成功
#coding=utf-8
__author__ = "zhangshy"
__date__ = "$Date: 2013/09/05$"
import re
import urllib.request
import urllib.parse
def translate(text):
'''
模拟浏览器的行为,向Google Translate的主页发送数据,然后抓取翻译结果
'''
#text 输入要翻译的英文句子
text_1=text
#'langpair':'en'|'zh-CN'从英语到简体中文
values = {'hl':'zh-CN','ie':'UTF-8','text':text_1,'langpair':"'en'|'zh-CN'"}
url = 'http://translate.google.cn/translate_t'
data = urllib.parse.urlencode(values)
data = data.encode('utf-8')
req = urllib.request.Request(url)
#模拟一个浏览器
browser='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)'
req.add_header('User-Agent',browser)
#向谷歌翻译发送请求
response = urllib.request.urlopen(req, data)
#读取返回页面
html = response.read().decode('utf-8')
# print (html)
#从返回页面中过滤出翻译后的文本
#使用正则表达式匹配
#翻译后的文本是'TRANSLATED_TEXT='等号后面的内容
#.*? non-greedy or minimal fashion
#(?<=...)Matches if the current position in the string is preceded
#by a match for ... that ends at the current position
pattern = re.compile(r"(?<=TRANSLATED_TEXT=).*?;")
m = pattern.search(html)
text_2 = m.group(0).strip(';')
return text_2
if __name__ == "__main__":
text_1 = 'Hello. Nice to meet you'
print ('The input text: {0}'.format(text_1))
text_2 = translate(text_1).strip("'")
print ('The output text:{0}'.format(text_2))