IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python调用有道接口和谷歌翻译实现自动翻译及其对比 -> 正文阅读

[网络协议]python调用有道接口和谷歌翻译实现自动翻译及其对比

python调用有道接口和谷歌翻译实现自动翻译及其对比

python调用有道接口

有道会提供接口供开发使用,但是查阅相关开发文档说明,发现是有请求限制,具体是每小时请求1000次,超过将会返回”errorcode 50“,这也是很多同学在使用python调用有道接口时常遇到的,这也是最开始使用有道自动翻译,然后弃坑的原因。
但是还是记录一下如何调用有道接口进行自动翻译,因为比起谷歌翻译,速度上和网络限制上稍微具有优势,如果是数据量很少的情况下可以使用有道翻译,但是翻译的准确与否,本文不做评论。
使用post方法对有道进行请求,本文使用的方法是有爬虫的形式对有道进行访问,而并非申请的有道开发接口,因此要先搞清楚请求中head都有哪些字段。
打开有道翻译随机进行翻译,打开谷歌浏览器开发者工具
在这里插入图片描述
根据请求头中的信息构造出相应的head,注意要对cookie进行处理,cookie中的”___rl__test__cookies=“字段是一个时间戳,需要每次请求的时候生成,前面的字段从网页中复制出来即可

head = {
  'Accept':'application/json, text/javascript, */*; q=0.01',
  'Accept-Encoding':'gzip, deflate',
  'Accept-Language':'zh-CN,zh;q=0.9',
  'Content-Length':"247",
  'Connection':'keep-alive',
  'Content-Type':'application/json; charset=UTF-8',
  'Host':'fanyi.youdao.com',
  'Origin':'http://fanyi.youdao.com',
  'Referer':'http://fanyi.youdao.com/',
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
  'X-Requested-With':'XMLHttpRequest',
  'Cookie': '....(省略,copy自己的cookie);___rl__test__cookies='+str(int(time.time()*1000)+random.randint(1, 10))
}

head有了,接下来就是构造自己的data

data = {
  'i': t,
  'from':'AUTO',
  'to':'AUTO',
  'smartresult':'dict',
  'client':'fanyideskweb',
  'salt':i,
  'sign':str_sent,
  'doctype':'json',
  'version':'2.1',
  'keyfrom':'fanyi.web',
  'action':'FY_BY_REALTIME',
  'typoResult':'false'
}

data中重要的三个参数,分别是”i“,”salt“,”sign“
其制作如下:

i = str(int(time.time()*1000)+random.randint(1, 10))
t = "The word you want to translate"
u = 'fanyideskweb'
l = 'Y2FYu%TNSbMCxc3t2u^XT'
src = u + t + i + l 
m2 = hashlib.md5()
m2.update(src.encode("utf-8"))
str_sent = m2.hexdigest()

可以看出,”i“就是一个时间戳,”t“是你想翻译的句子,”u“和”l“是一个固定字段,”u“是不变的字段,”l“是根据不同电脑生成,具体可以从谷歌网页开发者工具中找到
在这里插入图片描述
此时万事具备,就等请求了。
完整代码如下:

# encoding:utf-8
import requests
import time
import random
import hashlib
import urllib.request
import urllib.parse
import json

i = str(int(time.time()*1000)+random.randint(1, 10))
t = "please input the word you want to translate:"
u = 'fanyideskweb'
l = 'Y2FYu%TNSbMCxc3t2u^XT'
src = u + t + i + l 
m2 = hashlib.md5()
m2.update(src.encode("utf-8"))
str_sent = m2.hexdigest()

head = {
  'Accept':'application/json, text/javascript, */*; q=0.01',
  'Accept-Encoding':'gzip, deflate',
  'Accept-Language':'zh-CN,zh;q=0.9',
  'Content-Length':"247",
  'Connection':'keep-alive',
  'Content-Type':'application/json; charset=UTF-8',
  'Host':'fanyi.youdao.com',
  'Origin':'http://fanyi.youdao.com',
  'Referer':'http://fanyi.youdao.com/',
  'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
  'X-Requested-With':'XMLHttpRequest',
  'Cookie': 'OUTFOX_SEARCH_USER_ID=1523396180@10.169.0.84; OUTFOX_SEARCH_USER_ID_NCOO=223699579.50150317; _ntes_nnid=8c0e5a401f47f77de8a85318dc9ca832,1641732829832; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcHH4fqAJWSs6a5XUL5x; SESSION_FROM_COOKIE=unknown; ___rl__test__cookies='+str(int(time.time()*1000)+random.randint(1, 10))
}

data = {
  'i': t,
  'from':'AUTO',
  'to':'AUTO',
  'smartresult':'dict',
  'client':'fanyideskweb',
  'salt':i,
  'sign':str_sent,
  'doctype':'json',
  'version':'2.1',
  'keyfrom':'fanyi.web',
  'action':'FY_BY_REALTIME',
  'typoResult':'false'
}

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url, data)
html =response.read().decode('utf-8')
target = json.loads(html)
print("翻译的结果是:%s" %(target['translateResult'][0][0]['tgt']))

python谷歌翻译接口

谷歌翻译很简单,直接上代码

import re
import html
from urllib import parse
import requests

GOOGLE_TRANSLATE_URL = 'http://translate.google.cn/m?q=%s&tl=%s&sl=%s'

def translate(text, to_language="auto", text_language="auto"):

    text = parse.quote(text)
    url = GOOGLE_TRANSLATE_URL % (text,to_language,text_language)
    response = requests.get(url)
    data = response.text
    expr = r'(?s)class="(?:t0|result-container)">(.*?)<'
    result = re.findall(expr, data)
    if (len(result) == 0):
        return ""

    return html.unescape(result[0])
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 12:18:36  更:2022-01-28 12:20:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:42:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码