Python翻譯腳本如何實現(xiàn)語言翻譯
Python翻譯腳本是可以進行相關(guān)語言翻譯的。這是一個很有意思的事情。下面我們就詳細(xì)的來了解下相關(guān)的編寫流程。希望大家有所收獲。今天突然有一個想法,就是想自己寫一個翻譯腳本。可惜Google提供的API是供網(wǎng)絡(luò)應(yīng)用的。
剛好在《dive into python》里面這本書里面看到如何從HTML文檔中提取出來自己想要的內(nèi)容,那這樣的話,可不可以模擬瀏覽器來發(fā)送想翻譯的句子,然后再接收返回結(jié)果后的HTML源碼,***從中提取出翻譯的結(jié)果呢?
其實是行的,因為利用python可以模擬瀏覽器的行為,向Google翻譯的主頁發(fā)送想要翻譯的句子。下面是具體的代碼:
- import urllib,urllib2
- values={'hl':'zh—CN','ie':'utf8','text':text,'langpair':"en|
zh-CN"}- url='http://translate.google.cn/translate_t'
- data = urllib.urlencode(values)
- req = urllib2.Request(url, data)
- req.add_header('User-Agent', "Mozilla/5.0+(compatible;+Googl
ebot/2.1;++http://www.google.com/bot.html)")- response = urllib2.urlopen(req)
上面最關(guān)鍵的是text這個變量,值為想翻譯的句子。后面的langpair的值是語言對,這里是英文翻譯成簡體中文,可以自由改動。下面就要實現(xiàn)一個類來取出我們想要的翻譯結(jié)果,這個類要從SGMLParser派生出來,SGMLParser是在sgmllib.py中包含的。
- from sgmllib import SGMLParser
- class URLLister(SGMLParser):
- def reset(self):
- SGMLParser.reset(self)
- self.result = []
- self.open = False
- def start_div(self, attrs):
- id = [v for k, v in attrs if k=='id']
- if 'result_box' in id:
- self.open = True
- def handle_data(self, text):
- if self.open:
- self.result.append(text)
- self.open = False
當(dāng)調(diào)用feed方法時,就會尋找開始標(biāo)記為div的片段,當(dāng)找到時,它會調(diào)用一個自身內(nèi)部的方法,其實最終也就是調(diào)用到start_div跟handle_data這兩個方法來找出我們想要的翻譯結(jié)果,具體的就不說了。下面是完整的代碼:
- import urllib,urllib2
- from sgmllib import SGMLParser
- class URLLister(SGMLParser):
- def reset(self):
- SGMLParser.reset(self)
- self.result = []
- self.open = False
- def start_div(self, attrs):
- id = [v for k, v in attrs if k=='id']
- if 'result_box' in id:
- self.open = True
- def handle_data(self, text):
- if self.open:
- self.result.append(text)
- self.open = False
- while True:
- text = raw_input("請輸入要翻譯的英文(退出輸入q):")
- if text=='q':
- break;
- values={'hl':'zh-CN','ie':'utf8','text':text,'langpair':
"en|zh-CN"}- url='http://translate.google.cn/translate_t'
- data = urllib.urlencode(values)
- req = urllib2.Request(url, data)
- req.add_header('User-Agent', "Mozilla/5.0+(compatible;+Googleb
ot/2.1;++http://www.google.com/bot.html)")- response = urllib2.urlopen(req)
- parser = URLLister()
- parser.feed(response.read())
- parser.close()
- print "翻譯結(jié)果:"
- for i in parser.result:
- i = unicode(i,'utf-8').encode('gbk');
- print i
以上就是對Python翻譯腳本的詳細(xì)介紹。
【編輯推薦】