基于python实现百度翻译功能
运⾏环境: python 3.6.0
今天处于练习的⽬的,就⽤ python 写了⼀个百度翻译,是如何做到的呢,其实呢就是拿到接⼝,通过这个接⼝去访问,不过中间确实是出现了点问题,不过都解决掉了
先晾图后晾代码
运⾏结果:
代码:
# -*- coding: utf-8 -*-
"""
功能:百度翻译
python爬虫开发注意事项:中英⽂⾃动切换
"""
import requests
import re
class Baidu_Translate(object):
def __init__(self, query_string):
self.query_string = query_string
self.url_1 = 'fanyi.baidu/sug'
# self.url = 'fanyi.baidu/v2transapi' # 这⾥不能⽤这个地址,因为对⽅采⽤了反爬⾍措施,访问这个地址是⼈家是不会给你任何数据的
self.url_0 = 'fanyi.baidu/transapi'
self.zh_pattern = repile('[\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 请求上传的参数,并判断输⼊类型并予以返回
: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 数据
:return: 向百度请求的 json 数据
"""
data = _post_data()
try:
response_0 = quest(method="post", url=self.url_0, headers=self.headers, data=data).json()
except Exception: # 进⾏数据请求的任何异常处理
response_0 = ''
try:
response_1 = quest(method="post", url=self.url_1, headers=self.headers, data=data).json()
except Exception: # 进⾏数据请求的任何异常处理
response_1 = ''
return response_0, response_1
def parse_translate_data(self):
"""
数据解析,将请求到的翻译内容解析并输出
:
return: None
"""
response_0 = quest_translate()[0]
response_1 = quest_translate()[1]
# item = response_0
if response_0:
item = ('data')[0].get('dst')
print('key word:', self.query_string, '\t', 'translate:', item)
if response_1:
data = ('data')
print()
for item in data[:1]: # 长度⼀般为5,这⾥只保留其释义
print('key word: \t[ {key} ]'.format(('k')))
print('value: \t\t[ {value} ]'.format(('v')))
print()
# print(('data'))
def main():
"""
主函数
: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实现百度翻译功能,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!

发表评论