11,073
社区成员
发帖
与我相关
我的任务
分享
import json
import hashlib
import time
import requests
class fanyi_spaider:
def __init__(self,text):
self.text = text
url = 'http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba'
self.headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4651.0 Safari/537.36"}
self.data = self.get_data()
sign = (hashlib.md5(('6key_cibaifanyicjbysdlove1' + self.text).encode('utf-8')).hexdigest())[0:16]#一种加密算法目前还不会 返回经过算法后得到的固定长度的数子串
self.url = url + '&sign=' + sign #此网页是动态生成的其中sign是加密算法后得到的随机固定数串所以需要单独做
'''这里为加密方式'''
#r = c()("6key_cibaifanyicjbysdlove1".concat(t.q.replace(/(^\s*)|(\s*$)/g, ""))).toString().substring(0, 16);
#return h("/index.php?c=trans&m=fy&client=6&auth_user=key_ciba&sign=".concat(r), {
#sign = (hashlib.md5(('6key_cibaifanyicjbysdlove1' + self.text).encode('utf-8')).hexdigest())[0:16]
def get_data_fromour(self):
#从服务器获得数据,并且解码返回
response = requests.post(self.url,headers=self.headers,data=self.data)#date 作为请求体当成参数传入
return response.content.decode()
def get_data(self):
#获取请求数据
data = {'form':'auto','to':'auto','q':self.text}#网页检测形式自动 q值及需要翻译的文字或英文等 ------>获得请求体
return data
def parse_data(self,json_str):
'''json_str是获得的解码后的数据'''
dict_data = json.loads(json_str)#loads将json格式字符串转换为字典 json一种数据格式
result = dict_data['content']['out'] #读取字典中的一个key 的值 依据返回类型决定 如下提取out的value
'''{"status":1,"content":{"from":"en","to":"zh","vendor":"ciba","out":"\u7537\u4eba","reqid":"ce6b9d50-a9d7-42c1-a2c6-f2edb5bc5b81","version":"v2.18.211028.1","ciba_use":"\u4ee5\u4e0a\u7ed3\u679c\u6765\u81ea\u673a\u5668\u7ffb\u8bd1\u3002","ciba_out":"","err_no":0,"ttsLan":8,"ttsLanFrom":1}}'''
print('{} 翻译后的结果是 {}'.format(self.text,result))
def run(self):
json_str = self.get_data_fromour()
self.parse_data(json_str)
if __name__ == '__main__':
text = input('请输入要翻译的文字(或其他语言):')
spider = fanyi_spaider(text)#创建一个类对象 只需要传__init__的参数
spider.run()
time.sleep(20)