Python翻译脚本如何实现语言翻译


Python翻译脚本是可以进行相关语言翻译的。这是一个很有意思的事情。下面我们就详细的来了解下相关的编写流程。希望大家有所收获。今天突然有一个想法,就是想自己写一个翻译脚本。可惜Google提供的API是供网络应用的。

刚好在《dive into python》里面这本书里面看到如何从HTML文档中提取出来自己想要的内容,那这样的话,可不可以模拟浏览器来发送想翻译的句子,然后再接收返回结果后的HTML源码,最后从中提取出翻译的结果呢?

其实是行的,因为利用python可以模拟浏览器的行为,向Google翻译的主页发送想要翻译的句子。下面是具体的代码:

  1. import urllib,urllib2  
  2. values={'hl':'zh—CN','ie':'utf8','text':text,'langpair':"en|
    zh-CN"}  
  3. url='http://translate.google.cn/translate_t' 
  4. data = urllib.urlencode(values)  
  5. req = urllib2.Request(url, data)  
  6. req.add_header('User-Agent', "Mozilla/5.0+(compatible;+Googl
    ebot/2.1;++http://www.google.com/bot.html)")  
  7. response = urllib2.urlopen(req)  
  8.  

上面最关键的是text这个变量,值为想翻译的句子。后面的langpair的值是语言对,这里是英文翻译成简体中文,可以自由改动。下面就要实现一个类来取出我们想要的翻译结果,这个类要从SGMLParser派生出来,SGMLParser是在sgmllib.py中包含的。

  1. from sgmllib import SGMLParser  
  2. class URLLister(SGMLParser):  
  3. def reset(self):  
  4. SGMLParser.reset(self)  
  5. self.result = []  
  6. self.open = False 
  7. def start_div(self, attrs):  
  8. id = [v for k, v in attrs if k=='id']  
  9. if 'result_box' in id:  
  10. self.open = True 
  11. def handle_data(self, text):  
  12. if self.open:  
  13. self.result.append(text)  
  14. self.open = False 
  15.  

当调用feed方法时,就会寻找开始标记为div的片段,当找到时,它会调用一个自身内部的方法,其实最终也就是调用到start_div跟handle_data这两个方法来找出我们想要的翻译结果,具体的就不说了。下面是完整的代码:

  1. import urllib,urllib2  
  2. from sgmllib import SGMLParser  
  3. class URLLister(SGMLParser):  
  4. def reset(self):  
  5. SGMLParser.reset(self)  
  6. self.result = []  
  7. self.open = False 
  8. def start_div(self, attrs):  
  9. id = [v for k, v in attrs if k=='id']  
  10. if 'result_box' in id:  
  11. self.open = True 
  12. def handle_data(self, text):  
  13. if self.open:  
  14. self.result.append(text)  
  15. self.open = False 
  16. while True:  
  17. text = raw_input("请输入要翻译的英文(退出输入q):")  
  18. if text=='q':  
  19. break;  
  20. values={'hl':'zh-CN','ie':'utf8','text':text,'langpair':
    "en|zh-CN"}  
  21. url='http://translate.google.cn/translate_t' 
  22. data = urllib.urlencode(values)  
  23. req = urllib2.Request(url, data)  
  24. req.add_header('User-Agent', "Mozilla/5.0+(compatible;+Googleb
    ot/2.1;++http://www.google.com/bot.html)")  
  25. response = urllib2.urlopen(req)  
  26. parser = URLLister()  
  27. parser.feed(response.read())  
  28. parser.close()  
  29. print "翻译结果:"  
  30. for i in parser.result:  
  31. i = unicode(i,'utf-8').encode('gbk');  
  32. print i 

以上就是对Python翻译脚本的详细介绍。

相关内容

    暂无相关文章

评论关闭