学习了一个翻译软件 爬取金山词霸的数据

此人很懒一月一改 7天学习首期学员 2022-01-26 23:21:59
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)

 

...全文
422 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-大数据 发布问题, 以便更快地解决您的疑问

11,073

社区成员

发帖
与我相关
我的任务
社区描述
创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践
python学习 企业社区
社区管理员
  • Python全栈技术社区
  • Lumos_zbj
  • 北侠大卫
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践

  • 这里有最新最全的 Python 学习内容及资源,每月多达4次技术公开课
  • 这里有众多 Python 学习者,陪伴你一起交流成长
  • 这里有专业 Python 社区专家、讲师,帮助你跨越学习瓶颈,解决实操难题
  • 这里有丰富的社区活动,可以开阔眼界,结识更多同伴

【最新活动】:

  1. 周四技术公开课讲师招募中,点击查看详情
  2. “Python 社区专家团” 招募中,点击查看详情

 

试试用AI创作助手写篇文章吧