首页 > 其他分享 >有道智云 之翻译网页内容

有道智云 之翻译网页内容

时间:2023-06-03 18:04:46浏览次数:45  
标签:hashlib return algorithm 有道 html 网页内容 import 智云 hash

一、文档

https://ai.youdao.com/DOCSIRMA/html/trans/api/wyfy/index.html

二、示例

# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import hashlib
import time
from importlib import reload
import json

import time

reload(sys)

# 有道翻译地址
YOUDAO_URL = 'https://openapi.youdao.com/translate_html'
# 替换为您的应用ID
APP_KEY = ''
# 替换为您的密钥
APP_SECRET = ''

''' sha256加密 '''
def encrypt(signStr):
    hash_algorithm = hashlib.sha256()
    hash_algorithm.update(signStr.encode('utf-8'))
    return hash_algorithm.hexdigest()

''' 判断长度 '''
def truncate(q):
    if q is None:
        return None
    size = len(q)
    return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]

''' 开始翻译 '''
def do_request(data):
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    return requests.post(YOUDAO_URL, data=data, headers=headers)

def connect(keywords, to='en', _from='zh-CHS'):
    if not keywords:
        return ''
    q = keywords
    data = {}
    data['from'] = _from
    data['to'] = to
    data['signType'] = 'v3'
    curtime = str(int(time.time()))
    data['curtime'] = curtime
    salt = str(uuid.uuid1())
    signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['q'] = q
    data['salt'] = salt
    data['sign'] = sign

    response = do_request(data)
    contentType = response.headers['Content-Type']
    if contentType == "audio/mp3":
        millis = int(round(time.time() * 1000))
        filePath = "合成的音频存储路径" + str(millis) + ".mp3"
        fo = open(filePath, 'wb')
        fo.write(response.content)
        fo.close()
    else:
        json_obj = json.loads(response.content)
        # print(json_obj)
        if json_obj.get('errorCode') == '0':
            return json_obj.get('data').get('translation')
        elif json_obj.get('errorCode') == '500':
            if json_obj.get('errorMessage') == '30':
                # 翻译失败
                return q
            print("errorMessage = " + json_obj.get('errorMessage'))
        # 其他情况返回空
        return ''

if __name__ == '__main__':
    data = connect("公司专业生产的PVC套管", 'en')
    print(data)

 



标签:hashlib,return,algorithm,有道,html,网页内容,import,智云,hash
From: https://blog.51cto.com/u_15309652/6408339

相关文章

  • 有道智云翻译
    一、文档https://ai.youdao.com/DOCSIRMA/html/trans/api/wyfy/index.html二、示例#-*-coding:utf-8-*-importsysimportuuidimportrequestsimporthashlibimporttimefromimportlibimportreloadimportjsonimporttimereload(sys)#有道翻译地址YOUDA......
  • 前端怎么防止网页内容被爬取?
    动态的Class名称或者ID动态的标题限制访问频率:可以对同一IP地址的访问进行限制,防止恶意爬虫过度频繁地访问同一页面。使用反爬虫技术:如图形验证码,滑动验证码、语音验证码等方式,提高爬虫运行的难度。动态生成接口:通过Ajax请求来获取数据,动态生成页面内容,防止爬虫......
  • 有道翻译
    importtimeimportrequestsimportexecjsd=execjs.get().compile(open('decrypt.js','r',encoding='utf-8').read())headers={'Accept':'application/json,text/plain,*/*','Accept-Language&#......
  • 爬虫案例之有道翻译execjs改写(JS代码改良版)
    网易有道翻译之逆向破解[execjs代码改写]网址:https://fanyi.youdao.com/index.html#/***用到的知识点:(1)requests模块和session模块,发起请求什么是session对象?该对象和requests模块用法几乎一致.对于在请求过程中产生了cookie的请求如果该请求是使用session发起的,则co......
  • 爬虫案例之网易有道翻译Python代码改写
    网易有道翻译之逆向破解[Python代码改写]网址:https://fanyi.youdao.com/index.html#/***用到的知识点:(1)requests模块和session模块,发起请求什么是session对象?该对象和requests模块用法几乎一致.对于在请求过程中产生了cookie的请求如果该请求是使用session发起的,则co......
  • 爬虫案例之网易有道翻译JS代码复杂版
    网易有道翻译逆向案例本次案例逆向的是网易有道云翻译https://fanyi.youdao.com/index.html#/用到的知识包括requests模块及方法md5加密js代码环境的补全【一】分析网站(1)网站页面如图(2)抓包(3)分析抓到的包逐个查看每个包的标头和载荷在webtranslate这个......
  • 印象笔记强制notes格式后导入obsidian、有道云笔记方法
    新版印象笔记给enex格式去掉了,换成notes格式,无法导入别的地方,上网查了下还是有方法导出的安装工具$pipinstall--userevernote-backup按照教程同步笔记$evernote-backupinit-db--backendchina$evernote-backupsync$evernote-backupexportoutput_dir/......
  • 有道翻译中英文翻译
    #导入必要的模块和库importtimeimportreimportjsonimportrequestsfromhashlibimportmd5importhashlibfromCrypto.CipherimportAESfromCrypto.Util.Paddingimportunpadimportbase64#pipinstallpycryptodome#将存放模块的文件(Crypto)改成大写开头(Crypto)#接......
  • 调用有道翻译接口进行翻译
    1'''2i:你好3from:AUTO4to:AUTO5smartresult:dict6client:fanyideskweb7salt:16643765479061//毫秒级别的时间戳后面加上个0-9之间的随机数,js代码:r+parseInt(10*Math.random(),10);这里的r表示时间戳字符串8sign:1d69ce8f7c6258......
  • NO62、二叉搜索树的第K个节点(终于有道简单点的了,过)
    62、二叉搜索树的第K个节点过给定一棵二叉搜索树,请找出其中的第k小的结点。例如,(5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。示例1输入{5,3,7,2,4,6,8},3......