youdao dict by python

=====================youdao dict by python===============

import time
import random
import re
import hashlib

import requests
from scrapy import Selector


url = 'http://fanyi.youdao.com/'
s = requests.Session()
s.headers = {
    'Referer': 'http://fanyi.youdao.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'}

# Get cookies
r_url = s.get(url)

# Get latest D for md5 from file fanyi.min.js
# <script type="text/javascript" src="http://shared.ydstatic.com/fanyi/newweb/v1.0.9/scripts/newweb/fanyi.min.js"></script>
# sel = Selector(text=r_url.text)
# url_js = sel.css('script::attr(src)').re_first('.*fanyi.min.js')
# r_js = s.get(url_js)
# D = re.search(r'D\s*=\s*"(.*?)"', r_js.text).group(1)
# print(D)
D = 'ebSeFb%=XZ%T[KZ)c(sy!'

url_post = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
data = dict(
    # i = 'have you eaten',
    i = 'What day is it today?',    
    # from = 'AUTO',
    to = 'AUTO',
    smartresult = 'dict',
    client = 'fanyideskweb',
    doctype = 'json',
    version = '2.1',
    keyfrom = 'fanyi.web',
    action = 'FY_BY_CLICKBUTTION',
    typoResult = 'false'
)

salt = str(int(time.time()*1000) + random.randint(0, 9))
print(salt)
m = hashlib.md5()
m.update((data['client']+data['i']+salt+D).encode('utf-8'))
sign = m.hexdigest()
print(sign)

data.update({'from': 'AUTO', 'salt': salt, 'sign': sign})
r_post = s.post(url_post, data=data)
print(r_post.json())

使用urllib库可以提交post请求,实现有道翻译。首先,需要导入urllib库中的request和parse模块。然后,构建请求的URL和请求头部信息。接下来,构建参数字典parame,包括翻译内容、来源语言、目标语言等信息。将参数字典转换成字符串,并通过encode()方法转换成字节流。然后,使用urlopen()方法发送post请求,将参数字节流作为请求体传入,并将返回的响应内容读取出来。将返回的字符串转换成json格式的Python对象。最后,从Python对象中提取出翻译结果。以下是示例代码: ```python from urllib import request from urllib import parse import json url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule" headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0"} # 构建参数字典 parame ={ "i":"你好", "from":"AUTO", "to":"AUTO", "smartresult":"dict", "client":"fanyideskweb", "salt":"15596318223592", "sign":"6095c71447feda2d528eb238e957c476", "ts":"1559631822359", "bv":"e2a78ed30c66e16a857c5b6486a1d326", "doctype":"json", "version":"2.1", "keyfrom":"fanyi.web", "action":"FY_BY_REALTlME" } # 将参数字典转成字符串 data = parse.urlencode(parame).encode() # 发送post请求并获取响应内容 html = request.urlopen(url, data=data).read().decode() # 将字符串转换成json格式的Python对象 pythonObj = json.loads(html) # 提取翻译结果 result = pythonObj["translateResult"][0][0]['tgt'] print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值