用python写一个百度翻译
运行环境: python 3.6.0
今天处于练习的目的,就用 python 写了一个百度翻译,是如何做到的呢,其实呢就是拿到接口,通过这个接口去访问,不过中间确实是出现了点问题,不过都解决掉了
先晾图后晾代码
运行结果:
代码:
# -*- 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' # 这里不能用这个地址,因为对方采用了反爬虫措施,访问这个地址是人家是不会给你任何数据的
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 请求上传的参数,并判断输入类型并予以返回
: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 = self.get_post_data()
try:
response_0 = requests.request(method="post", url=self.url_0, headers=self.headers, data=data).json()
except Exception: # 进行数据请求的任何异常处理
response_0 = ''
try:
response_1 = requests.request(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 = 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():
"""
主函数
: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写一个百度翻译的更多相关文章
- 用Python实现一个“百度翻译”
import requests import json s = input("请输入你要翻译的内容:") headers = {"User-Agent":&qu ...
- python开发的百度翻译接口
做的一个python版的百度翻译,附代码 #!/usr/bin/env python # -*- coding:utf-8 -*- ''' 爬虫之百度翻译 需要的库有 js2py, request ...
- python写的百度图片爬虫
学了一下python正则表达式,写一个百度图片爬虫玩玩. 当技术遇上心术不正的人,就成我这样的2B青年了. python3.6开发.程序已经打包好,下载地址: http://pan.baidu.com ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)
昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...
- [py]python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 参考: http://blog.51cto.com/lovelace/1631831 更新功能: 数据库进行数据存入和读取操作 字典配合函数 ...
- 【Python】如何基于Python写一个TCP反向连接后门
首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...
- Python写一个自动点餐程序
Python写一个自动点餐程序 为什么要写这个 公司现在用meican作为点餐渠道,每天规定的时间是早7:00-9:40点餐,有时候我经常容易忘记,或者是在地铁/公交上没办法点餐,所以总是没饭吃,只有 ...
- 用python写一个自动化盲注脚本
前言 当我们进行SQL注入攻击时,当发现无法进行union注入或者报错等注入,那么,就需要考虑盲注了,当我们进行盲注时,需要通过页面的反馈(布尔盲注)或者相应时间(时间盲注),来一个字符一个字符的进行 ...
随机推荐
- Python3基础(七) I/O操作
一个程序可以从键盘读取输入,也可以从文件读取输入:而程序的结果可以输出到屏幕上,也可以保存到文件中便于以后使用.本文介绍Python中最基本的I/O函数. 一.控制台I/O 读取键盘输入 内置函数in ...
- [dfs] UVALive 3667 Ruler
题目链接: option=com_onlinejudge&Itemid=8&page=show_problem&problem=1668">https://ic ...
- Ajax跨域、Json跨域、Socket跨域和Canvas跨域等同源策略限制的解决方法
同源是指同样的协议.域名.port,三者都同样才属于同域.不符合上述定义的请求,则称为跨域. 相信每一个开发者都曾遇到过跨域请求的情况,尽管情况不一样,但问题的本质都能够归为浏览器出于安全考虑下的同源 ...
- Python&MySQL
环境:windows8+Python2.7+MySQL5.6 尝试过在C/C++中嵌入SQL语言,最终在其复杂"繁琐"环境配置中败下阵来,后来发现Python和MySQL比較eas ...
- 在GNU Linux中怎样得到一个进程当前的流量
/********************************************************************* * Author : Samson * Date ...
- JpGraph中文乱码问题解决
JpGraph是一个PHP的图形类库,可以方便地生成各种柱状图,饼图,折线图等等,而且还可以方便地加文字.但是,中文的情况就稍微麻烦了一点.在JpGraph中默认是要把字符串转成utf8的,但是如果你 ...
- NoSql基础知识
一.为什么要有NoSql 关系型数据库在三个方面存在不足,或者说,比不上NoSQL: 1.大量数据的写入处理 这里说的关系型数据库不擅长大量数据写入,并不是说关系型数据库在进行大批量数据插入的时候,比 ...
- Linux下的ssh实验环境搭建与管理
实验环境[size=10.5000pt]1:网桥模式[size=10.5000pt]2:安装好vmtoos[size=10.5000pt]3:安装好yum[size=10.5000pt]4:安装好ss ...
- 洛谷 P2055 [ ZJOI 2009 ] 假期的宿舍 —— 二分图匹配
题目:https://www.luogu.org/problemnew/show/P2055 二分图匹配: 注意要连边的话对方必须有床! 代码如下: #include<iostream> ...
- PCB ODB++(Gerber)图形绘制实现方法
这里讲解一下用net解析PCB图形绘制实现方法 一.解析PCB图形绘制实现 解析PCB图形,说简单也非常简单,先说一下,PCB Gerber图形由:点,线,弧,铜皮,文字 5类元素组成,通常简写为:P ...