Python – Translate Tool – Google Translate API – free version

簡介

當我們使用Python爬蟲抓取新聞時,假如是抓取英文文章,但我們又想要把它轉換成中文的話,我們可以使用之前有介紹的『有道雲平台』,但是該平台每翻譯幾個字數都需要花費固定金額,所以我就找找看有沒有花少一點點錢或是不用花錢轉換器,本篇將介紹Google翻譯套件API。

實作-安裝、測試、除錯

pip3 install googletrans

不免俗的,一開始請安裝此套件,如上方指令。在網路上有分兩種版本,一種是直接到Google API啟用Tanslator API並且要綁定帳號,額度到了要扣錢,另一種版本是別人打包好的。github網址:https://github.com/ssut/py-googletrans

import googletrans
print(googletrans.LANGUAGES)

在開始使用之前,我們先測試一下到底有沒有安裝好,可以試試看上面的程式碼貼上執行看看,沒出錯的話會出現上圖的執行結果。代表該套件裡面有列出來的翻譯語言服務。

目前看起來都是正常的,但當你使用上了其他的方法,且指定某容器為『Translator()』時,就會出現錯誤,我不知道其他人有沒有遇過,但遇到了就是要解決。錯誤訊息如上圖。

$ pip uninstall googletrans
$ git clone https://github.com/alainrouillon/py-googletrans.git
$ cd ./py-googletrans
$ git checkout origin/feature/enhance-use-of-direct-api
$ python setup.py install

在網路上找到了解法,如上圖,依照上方指令依序輸入,照理說應該就可以解掉,但很不信的,我很衰,並沒有解掉。

$ pip uninstall googletrans
$ git clone https://github.com/BoseCorp/py-googletrans.git
$ cd ./py-googletrans
$ python setup.py install

我就棄而不捨的繼續嘗試後續的解法,一樣依照上方的指令依序輸入。

from googletrans import Translator

#translator = Translator()
translator = Translator(service_urls=['translate.googleapis.com'])
print(translator.translate('測試').text)

最後一個關鍵是,Translator()已經不能正常使用了,必須在括弧內加入『 service_urls=[‘translate.googleapis.com’]』,才可以正常運作,大家可以直接複製上方程式碼嘗試看看,執行成功如上圖。我在想這種偏門不用付錢的方法,可能就要付出相對的代價。

實作-功能

detect()

該套件有提供語言偵測的方法,就是使用『容器名稱.detect()』,在括弧內放入原始文字。而成功的話會印出該語言的縮寫。那我們怎樣知道縮寫有哪些,除了去google document查詢之外,其實可以在程式碼中打『 googletrans.LANGUAGE』就知道了,但我還是貼在下面給大家參照。

{'af': 'afrikaans', 'sq': 'albanian', 'am': 'amharic', 'ar': 'arabic', 'hy': 
 'armenian', 'az': 'azerbaijani', 'eu': 'basque', 'be': 'belarusian', 'bn': 
 'bengali', 'bs': 'bosnian', 'bg': 'bulgarian', 'ca': 'catalan', 'ceb': 'cebuano',
  'ny': 'chichewa', 'zh-cn': 'chinese (simplified)', 'zh-tw': 'chinese (traditional)
 ', 'co': 'corsican', 'hr': 'croatian', 'cs': 'czech', 'da': 'danish', 'nl': 'dutch'
 , 'en': 'english', 'eo': 'esperanto', 'et': 'estonian', 'tl': 'filipino', 'fi': 
 'finnish', 'fr': 'french', 'fy': 'frisian', 'gl': 'galician', 'ka': 'georgian', 
 'de': 'german', 'el': 'greek', 'gu': 'gujarati', 'ht': 'haitian creole', 'ha': 
 'hausa', 'haw': 'hawaiian', 'iw': 'hebrew', 'he': 'hebrew', 'hi': 'hindi', 'hmn':
  'hmong', 'hu': 'hungarian', 'is': 'icelandic', 'ig': 'igbo', 'id': 'indonesian', 
 'ga': 'irish', 'it': 'italian', 'ja': 'japanese', 'jw': 'javanese', 'kn': 
 'kannada', 'kk': 'kazakh', 'km': 'khmer', 'ko': 'korean', 'ku': 
 'kurdish (kurmanji)', 'ky': 'kyrgyz', 'lo': 'lao', 'la': 'latin', 'lv': 
 'latvian', 'lt': 'lithuanian', 'lb': 'luxembourgish', 'mk': 'macedonian', 
 'mg': 'malagasy', 'ms': 'malay', 'ml': 'malayalam', 'mt': 'maltese', 'mi': 
 'maori', 'mr': 'marathi', 'mn': 'mongolian', 'my': 'myanmar (burmese)', 'ne': 
 'nepali', 'no': 'norwegian', 'or': 'odia', 'ps': 'pashto', 'fa': 'persian', 
 'pl': 'polish', 'pt': 'portuguese', 'pa': 'punjabi', 'ro': 'romanian', 'ru':
  'russian', 'sm': 'samoan', 'gd': 'scots gaelic', 'sr': 'serbian', 'st': 
 'sesotho', 'sn': 'shona', 'sd': 'sindhi', 'si': 'sinhala', 'sk': 'slovak',
  'sl': 'slovenian', 'so': 'somali', 'es': 'spanish', 'su': 'sundanese', 'sw': 
 'swahili', 'sv': 'swedish', 'tg': 'tajik', 'ta': 'tamil', 'te': 'telugu', 
 'th': 'thai', 'tr': 'turkish', 'uk': 'ukrainian', 'ur': 'urdu', 'ug': 'uyghur',
  'uz': 'uzbek', 'vi': 'vietnamese', 'cy': 'welsh', 'xh': 'xhosa', 'yi': 
 'yiddish', 'yo': 'yoruba', 'zu': 'zulu'}

translate()

當然使用這套件最重要的就是要翻譯啊,不然還要幹嘛,最簡單的方式就是『容器.translate(要翻譯的文字)』,但是單純使用這簡單的這串程式碼,會印出一長串的文字,如下圖。

功能很好心的印出,翻譯過後的src、dest、text、pronunciation、extra_data等。我來介紹一下這幾個重要參數:

src:原文語言。

dest:轉換語言,預設是英文,你翻譯時當然也可以直接指定想要翻譯的語言,例如,『translator.translate(‘測試’, dest=’ja’)』,如上圖。但還是印出一長串文章。

text:這個參數可以將你經過translate後,你可以在後綴放置這一區的參數,例如『.src、.dest、當然還有.text』就會單純只印出你要的結果,如上圖。

pronunciation:翻譯後的發音。

extra_date:翻譯處理過後的細項,例如上圖的項目。

Multi-Translate

其實這套件很單純,就是翻譯,但是他有提供陣列翻譯的效果,這可以使用在字數限制的翻譯中,沒錯這個免費的套件是有一些限制的,其中有一個是字數限字,所以假如你文章很多文字,你可以將本文做切割並放在陣列中,讓translate來翻譯,如上圖,以『 [‘文章一’,’文章二’,….]』來做翻譯。

小結

在最後我們模擬一下爬蟲重網頁上擷取的文字,如上圖,我抓了一大串文字,透過該google translate的翻譯,看起來是ok的。當然翻譯還有其他的免費方法,例如使用selenium機器人複製原文並貼到瀏覽器,轉換玩在抓下來,也是可以,看大家喜好,我個人是覺得直接使用API比較快,但是還是要長時間的執行爬蟲程式將翻譯套件鑲嵌在期中測試,才知道穩不穩定。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *