基于python實現(xiàn)百度翻譯功能
更新時間:2019年05月09日 17:05:39 作者:TianChuang335
這篇文章主要介紹了基于python實現(xiàn)百度翻譯功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
運行環(huán)境: python 3.6.0
今天處于練習的目的,就用 python 寫了一個百度翻譯,是如何做到的呢,其實呢就是拿到接口,通過這個接口去訪問,不過中間確實是出現(xiàn)了點問題,不過都解決掉了
先晾圖后晾代碼
運行結果:

代碼:
# -*- coding: utf-8 -*-
"""
功能:百度翻譯
注意事項:中英文自動切換
"""
import requests
import re
class Baidu_Translate(object):
def __init__(self, query_string):
self.query_string = query_string
self.url_1 = 'https://fanyi.baidu.com/sug'
# self.url = 'https://fanyi.baidu.com/v2transapi' # 這里不能用這個地址,因為對方采用了反爬蟲措施,訪問這個地址是人家是不會給你任何數(shù)據(jù)的
self.url_0 = 'https://fanyi.baidu.com/transapi'
self.zh_pattern = re.compile('[\u4e00-\u9fa5]+')
self.headers = {
'Accept': '* / *',
'Accept - Encoding': 'gzip, deflate',
'Accept - Language': 'zh-CN, zh; q=0.9',
'Connection': 'keep - alive',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
def get_post_data(self):
"""
拿到 post 請求上傳的參數(shù),并判斷輸入類型并予以返回
:return: 查詢詞
"""
if re.search(pattern=self.zh_pattern, string=self.query_string): # 輸入的內容含有中文,則判別其為中文輸入
return {
"from": "zh",
"to": "en",
"kw": self.query_string, # 模糊查詢 url_1關鍵詞
"query": self.query_string, # 精準查詢 url_0關鍵詞
}
else:
return {
"from": "en",
"to": "zh",
"kw": self.query_string, # 模糊查詢 url_1關鍵詞
"query": self.query_string, # 精準查詢 url_0關鍵詞
}
def request_translate(self):
"""
向百度請求 json 數(shù)據(jù)
:return: 向百度請求的 json 數(shù)據(jù)
"""
data = self.get_post_data()
try:
response_0 = requests.request(method="post", url=self.url_0, headers=self.headers, data=data).json()
except Exception: # 進行數(shù)據(jù)請求的任何異常處理
response_0 = ''
try:
response_1 = requests.request(method="post", url=self.url_1, headers=self.headers, data=data).json()
except Exception: # 進行數(shù)據(jù)請求的任何異常處理
response_1 = ''
return response_0, response_1
def parse_translate_data(self):
"""
數(shù)據(jù)解析,將請求到的翻譯內容解析并輸出
:return: None
"""
response_0 = self.request_translate()[0]
response_1 = self.request_translate()[1]
# item = response_0
if response_0:
item = response_0.get('data')[0].get('dst')
print('key word:', self.query_string, '\t', 'translate:', item)
if response_1:
data = response_1.get('data')
print()
for item in data[:1]: # 長度一般為5,這里只保留其釋義
print('key word: \t[ {key} ]'.format(key=item.get('k')))
print('value: \t\t[ {value} ]'.format(value=item.get('v')))
print()
# print(response_1.get('data'))
def main():
"""
主函數(shù)
:return: None
"""
while True:
try:
query_keywords = input("""請輸入您要翻譯的內容 [ 輸入四個'0'退出 ] : """)
if query_keywords == "0000": # 如果輸入四個 '0',退出小程序
print('########## 您已成功退出百度翻譯 ##########')
break
else:
baidu = Baidu_Translate(query_string=query_keywords)
baidu.parse_translate_data()
except Exception as e:
print('請求出錯,請重試', e.args)
if __name__ == '__main__':
main()
總結
以上所述是小編給大家介紹的基于python實現(xiàn)百度翻譯功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
相關文章
opencv python Canny邊緣提取實現(xiàn)過程解析
這篇文章主要介紹了opencv python Canny邊緣提取實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02
windows10安裝python依賴報錯can‘t?create?or?remove?files?in?i
這篇文章主要介紹了windows10安裝python依賴報錯can‘t?create?or?remove?files?in?install?directory問題及解決方案,具有很好的參考價值,希望對大家有所幫助2023-09-09

