利用urllib.urlopen向有道翻译发送数据获得翻译结果
代码
from urllib import request from urllib import parse import json if __name__ == "__main__": # 模拟有道翻译发送请求,参数都来自Netword中对应请求 # 1 Headers中的Request URL Request_URL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' # 2 创建Form_Data字典,封装参数,参数来自Form Data Form_Data = {} Form_Data['i'] = 'apple' Form_Data['from'] = 'en' Form_Data['to'] = 'zh-CHS' Form_Data['smartresult'] = 'dict' Form_Data['client'] = 'fanyideskweb' Form_Data['salt'] = '1524113071611' Form_Data['sign'] = 'e307ad5e5edfe33b678657bb693bed28' Form_Data['doctype'] = 'json' Form_Data['version'] = '2.1' Form_Data['keyfrom'] = 'fanyi.web' Form_Data['action'] = 'FY_BY_CLICKBUTTION' Form_Data['typoResult'] = 'false' # 3 使用urlencode方法转换标准格式 data = parse.urlencode(Form_Data).encode('utf-8')
print(data)
# 4 传递Request对象和转换完格式的数据 response = request.urlopen(Request_URL, data) # 5 读取信息并解码 html = response.read().decode('utf-8') print(html) # 6 使用JSON translate_results = json.loads(html) # 找到翻译结果 translate_results = translate_results['translateResult'][0][0]['tgt'] # 打印翻译信息 print("翻译的结果是:%s" % translate_results)
{"errorCode":50} 的解决办法
去除url里面的_o字段,就可以解决问题

浙公网安备 33010602011771号