一、先直接上代码
key是要翻译的词,输出是翻译结果:
# -*- coding:utf-8 -*-
# @FileName :1.4有道翻译_post请求.py
# @Time :2021/8/15 19:39
# @Author :象牙塔小明
import requests
import re
url = "https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
key = "学习"
form_data = {
"i": key,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": "16290026148086",
"sign": "6e85b71fde008dcddb19a7efd41db453",
"lts": "1629002614808",
"bv": "82e80c28d69a2cab7ec51944342775ae",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME"
}
hearder = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER"}
# post请求
response = requests.post(url, headers=hearder, data=form_data)
# 正则表达式
patent = '"tgt":"(.*?)"}'
data = re.findall(patent, response.text)
print(data[0]) # 翻译结果
输出结果:learning
二、代码解释
1. url从哪里来?
答案:打开有道翻译链接,按F12,如下图所示:
得到链接:https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
去掉translate后面的_o即可,至于为什么这么去,不同的网站有不同的规律,需要试,也可以搜一些博客。
2. form_data从哪里来?
答案:是下图红框中的内容:
处理成字典即可。