先上图演示下效果
很实用的小工具,下面看实现这一过程的具体思路
一、通过分析百度翻译页面找出真正的翻译提交数据的网址
1、打开百度翻译页面,输入想要翻译的内容如下图
2、打开开发者工具,点击network,清空文件,如图
3、重新点击翻译按钮,发起请求,在network中分析文件的内容,找出真正的提交数据的网址,以及所要提交数据的类型及内容。如图
如图,有三个文件,从文件的名字来看,第一个语言检测,第二个翻译的接口,然后再次发送请求验证这一猜想。那么可以确定我们要翻译的内容是发送到翻译接口这个网址,然后把翻译的结果返回,由此就可以找到,post请求所要发给翻译接口的数据,翻译接口的网址,以及返回来的数据。
返回来的数据是个json,把这个数据复制粘贴到在线json解析软件中分析我们所要提取的数据
由此,便找到了我们所要提取的数据,下面用代码实现。
# coding=utf-8
import requests
import json
import sys
class BaiduFanyi:
def __init__(self, query_string):
# 1.构造翻译url
self.trans_url = 'http://fanyi.baidu.com/v2transapi'
self.query_string = query_string
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
}
# 2.post data
def get_post_data(self):
post_data = {
"from": "zh",
"to": "en",
"query": self.query_string,
"transtype": "translang",
"simple_means_flag": "3"
}
return post_data
# 3.发起请求,获取响应
def parse_url(self, post_data, url):
response = requests.post(url, data=post_data, headers=self.headers,)
return response.content.decode()
# 4.提取数据
def get_trans_ret(self, json_response):
dict_response = json.loads(json_response)
# ret = dict_response['trans_result']['data'][0]['dst']
ret = dict_response["trans_result"]["data"][0]["dst"]
print(ret)
def run(self):
# 1.构造url
# 2.post data
post_data = self.get_post_data()
# 3.发送请求,获取响应
json_response = self.parse_url(post_data, self.trans_url)
# 4.提取数据
self.get_trans_ret(json_response)
if __name__ == '__main__':
query_string = sys.argv[1] # 获取用户输入的要翻译的内容
fanyi = BaiduFanyi(query_string)
fanyi.run()
运行结果如下:
还没有达到之前的效果,下面修改home目录下的.bashrc配置文件
修改配置文件,添加如图箭头所示到最后一行
保存配置文件并退出
输入如下命令使修改后的配置文件生效
source .bashrc
接下来用新的命令运行程序
至此,完美结束!