难点是分析动态网页(抓包),找出url。
#coding=utf-8
import requests
import json
class BaiDuTranslatePhone:
def __init__(self):
self.query=input("请输入要翻译的内容:")
self.url = "https://fanyi.baidu.com/basetrans"
self.data={
"query": self.query,
"from": "zh",
"to": "en"
}
self.headers={
"Host": "fanyi.baidu.com",
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
"Referer": "https://fanyi.baidu.com/?aldtype=16047"
}
def run(self):
post_response = requests.post(url=self.url, data=self.data, headers=self.headers)
self.strs = post_response.content.decode()
#print(self.strs)
#print("self.strs type:"+str(type(self.strs)))
def get_result(self):
result_dict = json.loads(self.strs)
#print("result_dict type:"+str(type(result_dict)))
result=result_dict['trans'][0]['dst'] if len(result_dict['trans']) > 0 else None
print("翻译结果为:")
print(result)
if __name__ == '__main__':
while True:
translate=BaiDuTranslatePhone()
translate.run()
translate.get_result()
百度翻译
import requests
import json
url = "https://fanyi.baidu.com/basetrans"
headers ={
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",
}
data = {
'from':'zh',
'to':'en',
'query':'我是大叔',
}
response = requests.post(url,data = data,headers = headers)
r = response.text
#print(r)
h = json.loads(r)#str转dic类型
#print(h)
result = h['trans'][0]['dst']
print(result)
有道翻译
import requests
import json
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6776.400 QQBrowser/10.3.2577.400'
}
def translate():
content = input('输入要翻译的内容:')
data = {
'i':content ,
'from':'AUTO',
'to':'AUTO',
'doctype':'json'
}
response = requests.post(url,data = data, headers = headers)
r = response.text
h = json.loads(r)
print('翻译结果是:',h['translateResult'][0][0]['tgt'])
if __name__ == '__main__':
while 1:
translate()
op = input('是否要继续翻译,Y/继续, N/停止:')
if op == 'Y':
continue
else:
break