吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2870|回复: 8
收起左侧

[Python 转载] Python-有道翻译(自动检测语言)模块-js解析

[复制链接]
没有细胞的人 发表于 2021-10-18 18:47
本帖最后由 没有细胞的人 于 2021-10-18 20:11 编辑
今天学了网络爬虫,稍稍了解了一下下网络爬虫,新手小白试着自己写了个有道翻译的模块
翻译自动检测语言,但由于有道限制,只能翻译5000字以内,否则会返回error
方法是解析js。调用方法是面向对象的类,而不是用函数直接调用
直接复制粘贴或者下载附件就可以用了,应该有一点python基础的人都会知道如何使用的吧,应该吧,应该吧()
(文中//filename:表示该段代码文件在附件中的名称)

用了以下模块(//filename:youdaofanyi.py)
[Python] 纯文本查看 复制代码
import requests
import time
import random
import hashlib
import json


应该除了requests模块都已经安装好了趴
安装requests模块代码
[Shell] 纯文本查看 复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests



模块代码
[Python] 纯文本查看 复制代码
import requests
import time
import random
import hashlib
import json


class YouDao:
    def __init__(self, word):
        self.word = word
        self.formdata = None
        self.url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.50',
            'Referer': 'https://fanyi.youdao.com/',
            'cookie': '_ntes_nnid=b2bd3183b80a536b5e23a0517a0dbe09,1609301940731; OUTFOX_SEARCH_USER_ID_NCOO=96820041.49293956; OUTFOX_SEARCH_USER_ID="787599989@10.169.0.84"; JSESSIONID=aaa5u4ALZhnHhcfnoUsYx; ___rl__test__cookies=1634549585488'
        }

    def translation(self):
        self.config()
        response = requests.post(self.url, self.formdata, headers=self.headers)
        response.encoding = 'utf-8'
        try:
            data = json.loads(response.text)
            rdata = data['translateResult'][0][0]['tgt']
        except:
            rdata = 'error'
        return rdata

    def config(self):
        '''
        用于配置发送数据formdata
        '''

        ts = str(int(time.time() * 1000))
        i = ts + str(random.randint(0, 9))
        salt = i
        str_ = 'fanyideskweb' + self.word + i + "Y2FYu%TNSbMCxc3t2u^XT"
        md5 = hashlib.md5()
        md5.update(str_.encode('utf-8'))
        sign = md5.hexdigest()
        self.formdata = {
            'i': self.word,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': salt,
            'sign': sign,
            'lts': ts,
            'bv': '8f307b78e0cf5a0a41f77f2f8d464fe3',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_REALTlME'
        }


if __name__ == '__main__':
    word = input('请输入要翻译的内容:')
    youdao = YouDao(word)
    print(youdao.translation())



调用demo代码(//demo.py)
[Python] 纯文本查看 复制代码
import youdaofanyi

sentences = input('请输入要翻译的内容(5000字以内容,自动检测语言):')
youdao = youdaofanyi.YouDao(sentences)
print(youdao.translation())



附代码文件:
youdao.zip (7.77 KB, 下载次数: 40)

免费评分

参与人数 3吾爱币 +9 热心值 +3 收起 理由
woyucheng + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
时光书窝 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

风逝998 发表于 2021-10-18 19:26
感放楼主分享
muyu1314520 发表于 2021-10-18 20:01
ok667 发表于 2021-10-18 21:22
C哥888 发表于 2021-10-19 01:57
感谢楼主分享,翻译字数太少了

免费评分

参与人数 1热心值 +1 收起 理由
没有细胞的人 + 1 热心回复!

查看全部评分

YeLTYZ 发表于 2021-10-19 08:48
感谢分享
hedefu 发表于 2021-10-19 08:54
感放楼主分享
一个辣鸡 发表于 2021-10-19 09:25
这个我初学时也做过,搞一个while(True)让程序能一直使用更方便些

免费评分

参与人数 1吾爱币 +1 收起 理由
没有细胞的人 + 1 我很赞同!

查看全部评分

 楼主| 没有细胞的人 发表于 2021-10-19 12:25
C哥888 发表于 2021-10-19 01:57
感谢楼主分享,翻译字数太少了

可以加一个检测,超过字数的话可以试试分段翻译
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表