当前位置:   article > 正文

爬虫 | 基于 Python 实现有道翻译工具_python 有道翻译

python 有道翻译

Hi,大家好,我是半亩花海。本项目旨在利用 Python 语言实现一个简单的有道翻译工具。有道翻译是一款常用的在线翻译服务,能够实现多种语言的互译,提供高质量的翻译结果。


目录

一、项目功能

二、注意事项

三、代码解析

1. 导入必要的库

2. 设置请求头部信息

3. 获取用户输入

4. 生成加密所需的时间戳和盐值

5. 计算签名

6. 构造请求数据

7. 发送 POST 请求

8. 解析响应并输出结果

四、结果展示

五、完整代码


一、项目功能

  1. 用户输入要翻译的单词或短语。
  2. 程序通过 HTTP 请求向有道翻译服务发送请求,获取翻译结果。
  3. 解析服务器返回的 JSON 数据,提取翻译结果并显示给用户。

二、注意事项

  • 需要在代码中填写有效的 Cookie 信息,否则请求可能被拒绝。
  • 需要确保网络连接畅通,否则无法发送请求和接收响应。

三、代码解析

1. 导入必要的库

导入了需要使用的库,包括发送 HTTP 请求的 requests 库生成时间戳的 time 库生成随机数的 random 库以及进行 MD5 加密的 hashlib 库中的 md5 函数

  1. import requests # 用于发送 HTTP 请求和接收响应
  2. import time # 用于生成时间戳
  3. import random # 用于生成随机数
  4. from hashlib import md5 # 用于进行 MD5 加密

2. 设置请求头部信息

定义了请求头部信息的字典,包括 Cookie、Host、Origin、Referer 和 User-Agent 等字段,用于模拟浏览器发送请求。

  1. headers = {
  2. 'Cookie': 'OUTFOX_SEARCH_USER_ID=-690213934@10.108.162.139; OUTFOX_SEARCH_USER_ID_NCOO=1273672853.5782404; fanyi-ad-id=308216; fanyi-ad-closed=1; ___rl__test__cookies=1659506664755',
  3. 'Host': 'fanyi.youdao.com',
  4. 'Origin': 'https://fanyi.youdao.com',
  5. 'Referer': 'https://fanyi.youdao.com/',
  6. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
  7. }

3. 获取用户输入

通过 input() 函数获取用户输入的要翻译的单词或短语,并将其存储在名为 key 的变量中。

key = input("请输入你要翻译的单词:")

4. 生成加密所需的时间戳和盐值

使用 time.time() 获取当前时间戳,乘以 100 并转换为字符串,生成时间戳 lts;然后使用 random.randint() 生成一个随机数,并与时间戳拼接成盐值 salt

  1. lts = str(int(time.time() * 100))
  2. salt = lts + str(random.randint(0, 9))

5. 计算签名

根据有道翻译的签名算法,构造签名所需的字符串 sign_data,包括固定字符串、待翻译的单词、盐值和固定字符串。然后使用 md5() 函数sign_data 进行加密,并将结果转换为十六进制字符串,得到签名 sign

  1. sign_data = 'fanyideskweb' + key + salt +'Ygy_4c=r#e#4EX^NUGUc5'
  2. sign = md5(sign_data.encode()).hexdigest()

6. 构造请求数据

构造了一个包含翻译所需参数的字典 data,包括翻译文本 i源语言 from目标语言 to、smartresult、client、salt、sign、lts、bv、doctype、version、keyfrom 和 action 等信息。

  1. data = {
  2. 'i': key,
  3. 'from': 'AUTO',
  4. 'to': 'AUTO',
  5. 'smartresult': 'dict',
  6. 'client': 'fanyideskweb',
  7. 'salt': salt,
  8. 'sign': sign,
  9. 'lts': lts,
  10. 'bv': 'f0819a82107e6150005e75ef5fddcc3b',
  11. 'doctype': 'json',
  12. 'version': '2.1',
  13. 'keyfrom': 'fanyi.web',
  14. 'action': 'FY_BY_REALTlME',
  15. }

7. 发送 POST 请求

使用 requests.post() 方法发送 POST 请求,参数包括请求地址 url请求头部信息 headers请求数据 data,并将响应保存在 response 变量中。

  1. url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
  2. response = requests.post(url, headers=headers, data=data)

8. 解析响应并输出结果

输出了服务器返回的 JSON 格式的数据,其中包含翻译结果

print(response.text)

四、结果展示


五、完整代码

  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. import requests
  4. import time
  5. import random
  6. from hashlib import md5
  7. headers = {
  8. 'Cookie': 'OUTFOX_SEARCH_USER_ID=-690213934@10.108.162.139; OUTFOX_SEARCH_USER_ID_NCOO=1273672853.5782404; fanyi-ad-id=308216; fanyi-ad-closed=1; ___rl__test__cookies=1659506664755',
  9. 'Host': 'fanyi.youdao.com',
  10. 'Origin': 'https://fanyi.youdao.com',
  11. 'Referer': 'https://fanyi.youdao.com/',
  12. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
  13. }
  14. key = input("请输入你要翻译的单词:")
  15. lts = str(int(time.time() * 100))
  16. salt = lts + str(random.randint(0, 9))
  17. sign_data = 'fanyideskweb' + key + salt +'Ygy_4c=r#e#4EX^NUGUc5'
  18. sign = md5(sign_data.encode()).hexdigest()
  19. data = {
  20. 'i': key,
  21. 'from': 'AUTO',
  22. 'to': 'AUTO',
  23. 'smartresult': 'dict',
  24. 'client': 'fanyideskweb',
  25. # 时间戳 1970 秒
  26. 'salt':salt,
  27. # 加密
  28. 'sign': sign,
  29. # 时间戳
  30. 'lts': lts,
  31. # 加密的数据
  32. 'bv': 'f0819a82107e6150005e75ef5fddcc3b',
  33. 'doctype': 'json',
  34. 'version': '2.1',
  35. 'keyfrom': 'fanyi.web',
  36. 'action': 'FY_BY_REALTlME',
  37. }
  38. # 获取到资源地址
  39. url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
  40. response = requests.post(url, headers=headers, data=data)
  41. print(response.text)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/855611
推荐阅读
相关标签
  

闽ICP备14008679号