近期呢,在老师的帮助下学会了做一个随身翻译的小东西,还挺不错
主要是利用了一些基本爬虫技术,
requests库的基本使用。
random模块:随机获取一个指定范围内的随机数。
hashlib对js数据进行一个md5加密。
json数据转python数据的应用。
jsonpath解析出我们想要的结果。
还有就是time模块:1、来降低访问频率;2、用来获取使时间戳
这个主要要掌握的就是对js数据的分析,要具有逻辑。
以下是代码的呈现,欢迎各位大佬指导批评
import requests
import jsonpath
import time
import random
import hashlib
if __name__ == '__main__':
while True:
#输入要翻译的东西
data_ = input("请输入你想要翻译的内容:")
#确认url
url_ = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
#设置请求头
headers_ = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
"Referer": "https://fanyi.youdao.com/",
"Cookie": "OUTFOX_SEARCH_USER_ID=1383893629@10.110.96.160; OUTFOX_SEARCH_USER_ID_NCOO=801858250.6545407; JSESSIONID=aaaevB4DaSaT5fz2F5s_x; ___rl__test__cookies=1647437071968"
}
# lts:格林尼斯时间戳 >> int(time.time()*1000) 💡form表单时字符串类型的数据,需转化成字符串类型
lts_ = str(int(time.time() * 1000))
# salt : 格林尼斯时间戳 + 10以内的随机数 >> lts_ + random.randint(0,9) 💡字符串与字符串才能相加
salt_ = lts_ + str(random.randint(0,9))
# sign: "fanyideskweb" + 需要翻译的数据 + 格林尼斯时间戳 + 10以内的随机数 + "Ygy_4c=r#e#4EX^NUGUc5"
a = "fanyideskweb" + data_ + salt_ + "Ygy_4c=r#e#4EX^NUGUc5"
sign_ = hashlib.md5(a.encode()).hexdigest()
form_data = {
"i": data_,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": salt_,
"sign": sign_,
"lts": lts_,
"bv": "c2777327e4e29b7c4728f13e47bde9a5",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_CLICKBUTTION"
}
# 为了防止翻译的内容时不正确的单词,在这里抛出一个异常
try:
#发送请求
response_ = requests.post(url_,headers=headers_,data=form_data)
py_data = response_.json()
#解析提取出所需要的数据
res_ = jsonpath.jsonpath(py_data,"$..tgt")[0]
print(f"翻译的结果是:{res_}")
except:
print("输入有误,请重新输入....")
continue